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/