【问题标题】:Body content is not being sent while I am trying to send an email with attachment with main body content in Java methods of MimeMessage当我尝试在 MimeMessage 的 Java 方法中发送带有正文内容的附件时,未发送正文内容
【发布时间】:2017-06-17 22:22:32
【问题描述】:
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:");

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

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

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

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

提前致谢。

【问题讨论】:

  • 你只是设置了一个文件名还是你真的在某处添加了一些文件?
  • 我刚刚做了 setFileName 并且该文件存在于该位置。

标签: java jakarta-mail


【解决方案1】:

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

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-20
  • 1970-01-01
  • 2016-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多