【问题标题】:JAVA mail api: Why you need Multipart in order to send email with attachment?JAVA 邮件 api:为什么需要 Multipart 才能发送带附件的电子邮件?
【发布时间】:2017-01-01 13:10:00
【问题描述】:

我想发送一封电子邮件,其中仅包含附件,没有文本或其他任何内容。

为什么我应该将其表示为多部分电子邮件的一个正文部分?
为什么我不能只写

message.setFileName(filepath);

另一方面,这可行

message.setText("blablabla");

【问题讨论】:

  • 因为邮件必须有正文部分
  • 不是因为 java email API。这是因为 SMTP 协议。检查这个stackoverflow.com/questions/3902455/…
  • 詹斯,@RicardoVila 你不正确。 SMTP 电子邮件支持将非文本类型作为其直接正文的消息,而不使用多部分。检查 RFC:ietf.org/rfc/rfc2045.txt

标签: java email multipart


【解决方案1】:

因为这是 MIME 标准,所有电子邮件都应遵循 MIME RFC,以便电子邮件客户端正确显示电子邮件。附加图像是二进制数据,而邮件正文始终是 ASCII,用户无法打开正文中显示二进制的电子邮件,那将毫无用处。图像的二进制代码被转换为 BASE64,因此二进制可以以 ASCII 字符的形式传输,并且必须位于电子邮件 MIME 边界内。电子邮件软件知道如何找到这些边界,并将图像作为附件显示给用户,或者在正文中以正确的方式显示,这取决于您如何设置 MIME 边界。 Multipart 意味着电子邮件有多个边界,其中 ASCII 电子邮件正文是其中之一,无论该边界是否为 blanc。

【讨论】:

  • 阅读ietf.org/rfc/rfc2045.txt - 支持包含附件而非文本的邮件正文。是的,它们必须被编码(例如在 base64 或引用打印中),但它们不需要在多部分中。如果您不相信,请提供参考。
猜你喜欢
  • 2016-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-28
  • 2019-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多