2016-08-25 31 views
0

我想发送一封电子邮件,其中只包含一个附件,不包含任何文本或其他内容。JAVA mail api:为什么你需要Multipart才能发送带附件的电子邮件?

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

message.setFileName(filepath); 

当在另一方面,这种工作

message.setText("blablabla"); 
+0

因为邮件必须有正文部分 – Jens

+0

这不是因为Java电子邮件API。这是因为SMTP协议。 检查此问题http://stackoverflow.com/questions/3902455/smtp-multipart-alternative-vs-multipart-mixed –

+0

延斯,@RicardoVila你是不正确的。 SMTP电子邮件支持将非文本类型作为其直接主体的消息,而不使用多部分。检查RFC:https://www.ietf.org/rfc/rfc2045.txt –

回答

1

因为这是MIME标准,所有电子邮件应遵循RFC MIME为了让电子邮件客户端正确显示电子邮件。附加的图像是二进制数据,而消息正文总是ASCII,用户无法在body displayd中打开带有二进制文件的电子邮件,这是没有用的。图像的二进制代码被转换为BASE64,因此二进制文件可以以ASCII字符的形式进行传输,并且必须位于电子邮件MIME边界。电子邮件软件知道如何找到这些边界,并且可以将图像作为附件显示给用户,也可以在正文中显示正确的方式,具体取决于您如何设置MIME边界。 Multipart意味着电子邮件具有多种边界,其中ASCII电子邮件正文是其中之一,无论该电子邮件是否为白色。

+0

这很有道理,谢谢你的回答 – John

+0

阅读https://www.ietf.org/rfc/rfc2045.txt - 包含消息主体支持附件而不是文本。是的,他们必须被编码(例如base64或quoted-printable),但他们不需要在多部分。如果您不相信,请提供参考。 –

相关问题