Saya berhasil mengirim email dengan gambar kepada diri saya sendiri, namun, gambar itu muncul sebagai file bernama noname (di gmail, toh). Bagaimana saya bisa mengubah nama file gambar yang saya lampirkan ke email?

Berikut adalah bagian kode yang saya gunakan untuk mengirim email dengan gambar:

    public void SendEmail(
            String smtp_host_, 
            String smtp_port_, 
            String smtp_username_, 
            String smtp_password_,
            String to_,
            String subject_,
            String body_,
            String image_path_) {
        Properties props = new Properties();
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.host", smtp_host_);
        props.put("mail.smtp.port", smtp_port_);

        Session session = Session.getInstance(props,
          new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(smtp_username_, smtp_password_);
            }
          });

        try {

            Message message = new MimeMessage(session);

            message.setSubject(subject_);
            message.setFrom(new InternetAddress(smtp_username_));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to_));

            MimeMultipart multipart = new MimeMultipart("related");

            BodyPart messageBodyPart = new MimeBodyPart();
            messageBodyPart.setContent(body_, "text/html");
            multipart.addBodyPart(messageBodyPart);

            messageBodyPart = new MimeBodyPart();
            DataSource fds = new FileDataSource(image_path_);
            messageBodyPart.setDataHandler(new DataHandler(fds));
            messageBodyPart.setHeader("Content-ID","<image>");
            multipart.addBodyPart(messageBodyPart);

            message.setContent(multipart);

            Transport transport = session.getTransport();
            transport.connect();
            transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
            transport.close();
        }
        catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }
0
user1944429 24 Desember 2017, 08:02

1 menjawab

Jawaban Terbaik

Lihat javax.mail.internet.MimeBodyPart.setFileName(String).

Anda dapat melakukannya setelah membuat bagian:

messageBodyPart = new MimeBodyPart();
((MimeBodyPart) messageBodyPart).setFileName("filename.ext");

Lihat dokumen java di sini

0
ernest_k 24 Desember 2017, 05:07