java - 使用 Java 发送带有附件的电子邮件

标签 java

我有以下代码来发送带有附件的电子邮件。问题是,附件是一个简单的文本文件,是空的。但文件不是。 就在电子邮件中。文本显示正确。没有错误代码。

private void emailSenden() throws MessagingException, FileNotFoundException, IOException {

    Properties props = new Properties();
    props.put("mail.transport.protocol", "smtp");
    props.put("mail.smtp.host", SMTP_HOST_NAME);
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.port", "587");

    Authenticator auth = new SMTPAuthenticator();
    Session mailSession = Session.getDefaultInstance(props, auth);

    MimeMessage msg = new MimeMessage(mailSession);
    msg.setFrom(new InternetAddress("xyz@xxx.de", "Muster AG"));
    msg.setRecipients(Message.RecipientType.TO, "abc@aaa.de");
    msg.setSubject("Update erfolgreich.");
    msg.setSentDate(new Date());

    try {
        Multipart mp = new MimeMultipart();

        MimeBodyPart textPart = new MimeBodyPart();
        textPart.setText("Update erfolgreich");
        mp.addBodyPart(textPart);

        MimeBodyPart attachFilePart = new MimeBodyPart();
        attachFilePart.attachFile(new File("C:" + File.separator + "log" + File.separator + "logDatei.txt"));
        mp.addBodyPart(attachFilePart);

        msg.setContent(mp);
        msg.saveChanges();
        Transport.send(msg);

        System.out.println("Email gesendet");

    } catch (MessagingException e) {
        throw new RuntimeException(e);
    }
}

private class SMTPAuthenticator extends javax.mail.Authenticator {
    public PasswordAuthentication getPasswordAuthentication() {
        String username = SMTP_AUTH_USER;
        String password = SMTP_AUTH_PWD;
        return new PasswordAuthentication(username, password);
    }
}

最佳答案

试试这个

 attachFilePart = new MimeBodyPart();
 String filename = "c:\log\logDatei.txt";
 DataSource source = new FileDataSource(filename);
 attachFilePart .setDataHandler(new DataHandler(source));
 attachFilePart .setFileName(filename);
 multipart.addBodyPart(attachFilePart );

关于java - 使用 Java 发送带有附件的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36599842/

相关文章:

java - List.indexOf() 和我类(class)的自定义 equals() 返回 -1

java - 更新字符串的有效方法是什么?

java - Java程序与DatagramSocket之间的通信

java - 使用 XmlSerializer 将纯文本添加到 xml

java - 未调用 TestRule 中的 @Before 方法

java - 自动生成替换方法

java - 如何在 Eclipse 中重命名 gradle 项目?

java - 如何只公开某些类和方法?

JavaFX GridPane 子节点动态调整大小以填充指定区域

java - 使用 twitter4j 从特定位置提取主题标签的推文