java - 当我尝试使用 MimeMessage 的 Java 方法发送带有附件和主体内容的电子邮件时,未发送正文内容

标签 java jakarta-mail

Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(fromEmail));
message.setRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));
message.setFileName("abc.xls");
message.setText("Fill the content:");

以上是我正在使用的代码的主要部分。当我使用上面的代码时,我在发送的邮件中没有看到主体内容“填写内容”。还有其他帖子和评论有一段代码可以使用 MimeMultipart 和 MimeBodyPart 类来解决这个问题。但没有任何地方解释上述代码不起作用的原因。

我还知道使用 setFileName 不足以添加文件中存在的内容,它只是用于添加不带内容的附件。

注意:我使用的是 javax.mail-1.5.0.jar

您能解释一下上述代码不起作用的原因吗?

提前致谢。

最佳答案

包含文本消息和一个或多个附件的邮件必须是 MultiPart 消息,因为这是此类邮件的构造方式,以便接收邮件客户端能够理解它。

在您的简单示例中,您没有构建以 excel 文件 abc.xls 作为附件的邮件;相反,您创建一封文本邮件并告诉客户端该邮件的正文应命名为 abc.xls。最有可能的是,接收邮件客户端将提供一个文本文件,其内容为填写内容:,不恰本地命名为abc.xls,作为空邮件的附件;打开假定的 Excel 文件可能会导致 Excel 导入此文本文件。

TL;DR:使用 MimeMultiPart 创建带附件的邮件。

关于java - 当我尝试使用 MimeMessage 的 Java 方法发送带有附件和主体内容的电子邮件时,未发送正文内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41975244/

相关文章:

java - 如何在工作流程步骤中访问 Assets

Java手动溢出处理不需要的输出

java - android.os.NetworkOnMainThreadException - 如何解决?

java - 使用 IAM 凭证通过 JDBC 从 Spring 连接到 AWS Aurora 是否合适?

java - 如何使我的文件出现在浏览器的tomcat服务器中

JavaMail 无法从 docker 容器发送电子邮件

java - Gmail 中的 SMTPSendFailedException 530,SMTP 失败而 IMAP 工作

JavaMail 套接字异常 : Connection reset

java - 如何将 javax.mail.Session setDebugOut 重定向到 log4j 记录器?

java - 哪个是从 MySQL DB 生成 Hibernate 映射的最佳工具