与平原,HTML和SMTP的电子邮件附件正确的电子邮件格式?(Correct email forma

2019-06-25 03:35发布

问题:

我试图复制雅虎和Hotmail使用基于SMTP头/电子邮件,并将它们发送的Telnet,但我得到的电子邮件不显示附件包含的,但它确实显示正确的消息。

我怀疑是导致它:

我相信我对电子邮件的格式不正确,尽管在网上搜索了大量的文章(以及试图把握复杂和难以阅读的RFC),我还没有发现,解释如何使用所有这三个(平原任何有用的或简洁的文章,HTML和SMTP附件)正确。 我花了好几天试图改变代码,但是我要么得到公正消息(无附件)或整个SMTP数据显示身体(包括边界,HTML代码等)。

我希望通过这个问题来实现:

我希望有人能够在看我下面收集到的信息,并能告诉我,我错过了什么(或者究竟有电子邮件的格式不正确)。

调试信息:

我喂我发送到SMTP服务器文件中的信息重复,我已经粘贴的信息引擎收录(删除任何个人信息/编辑了 - Base64编码附件是从IMAP得到另一封电子邮件中只是一个文本文件):

信息逐字(减去控制字符)发送到SMTP服务器:

http://pastebin.com/QYwzWT0S

我的电子邮件客户端看到(注意没有附件):

http://i45.tinypic.com/29b1zci.jpg

当我下载的电子邮件(注意格式不正确)什么IMAP看到:

http://pastebin.com/zv3PBr8N

正确格式的电子邮件看起来应该像对IMAP什么:

http://pastebin.com/3yBySbxU

我怀疑SMTP是误解我所发送,这就是为什么当IMAP试图以检索电子邮件中的多部分/替代缺失。 我究竟做错了什么? 什么是服务器期待?

[感谢您的upvotes - 我可以重新启用的链接!]

Answer 1:

我清理了多边界符和得到这个,这对我的工作我的服务器上(我离开这里的SMTP命令):

From: "Edited Out" <editedout@yahoo.com> 
To: "Edited Out" <editedout@yahoo.com> 
Subject: Testing 4
MIME-Version: 1.0
Content-Type: multipart/alternative;
  boundary="boundary-type-1234567892-alt"

--boundary-type-1234567892-alt
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


Testing the text to see if it works!

--boundary-type-1234567892-alt
Content-Type: text/html; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable


<html>Does this actually work?</html>

--boundary-type-1234567892-alt
Content-Transfer-Encoding: base64
Content-Type: text/plain;name="Here2.txt"
Content-Disposition: attachment;filename="Here2.txt"

KiAxMyBGRVRDSCAoQk9EWVtURVhUXSB7NjU5fQ0KLS1fZjZiM2I1ZWUtMjA3YS00ZDdiLTg0NTgtNDY5YmVlNDkxOGRhXw0    KQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJpc28tODg1OS0xIg0KQ29udGVudC1UcmFuc2Zlci1FbmNvZG    luZzogcXVvdGVkLXByaW50YWJsZQ0KDQoNCkp1c3Qgc2VlaW5nIHdoYXQgdGhpcyBhY3R1
YWxseSBjb250YWlucyEgCQkgCSAgIAkJICA9DQoNCi0tX2Y2YjNiNWVlLTIwN2EtNGQ3Yi04NDU4LTQ2OWJlZTQ5MThkYV8    NCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PSJpc28tODg1OS0xIg0KQ29udGVudC1UcmFuc2Zlci1FbmNvZG    luZzogcXVvdGVkLXByaW50YWJsZQ0KDQo8aHRtbD4NCjxoZWFkPg0KPHN0eWxlPjwhLS0N
Ci5obW1lc3NhZ2UgUA0Kew0KbWFyZ2luOjBweD0zQg0KcGFkZGluZzowcHgNCn0NCmJvZHkuaG1tZXNzYWdlDQp7DQpmb25    0LXNpemU6IDEwcHQ9M0INCmZvbnQtZmFtaWx5OlRhaG9tYQ0KfQ0KLS0+PC9zdHlsZT48L2hlYWQ+DQo8Ym9keSBjbGFzcz    0zRCdobW1lc3NhZ2UnPjxkaXYgZGlyPTNEJ2x0cic+DQpKdXN0IHNlZWluZyB3aGF0IHRo
aXMgYWN0dWFsbHkgY29udGFpbnMhIAkJIAkgICAJCSAgPC9kaXY+PC9ib2R5Pg0KPC9odG1sPj0NCg0KLS1fZjZiM2I1ZWU    tMjA3YS00ZDdiLTg0NTgtNDY5YmVlNDkxOGRhXy0tDQopDQpmbHlubmNvbXB1dGVyIE9LIEZFVENIIGNvbXBsZXRlZA


--boundary-type-1234567890-alt--

在一个多电子邮件边界符是不太可能出现在电子邮件正文/附件任意文本。 当它显示在前面两个破折号,指定新的开始部分(包括最初的一部分,当它显示了在开头和结尾两个破折号,指定邮件的结尾。

您的原始邮件曾在邮件中间这个“结束边界”标记(右后<html>Does this actually work?</html>并有两个不同的界碑( --boundary-type-1234567890--boundary-type-1234567892-alt )。 这就解释了为什么该附件是不放过。



Answer 2:

原来,这个问题是非常微妙的。

Hotmail的传统( 这是我基于它的原始电子邮件 ),使用术语“多/替代”的电子邮件的多个部分。 我在我的电子邮件中使用“多/另类”。

事实证明雅虎不喜欢“多部分/替代”,将只正确地正确显示纯文本,HTML和附件时代替术语“多部分/混合”被使用(如我注意到雅虎兼容电子邮件中使用该术语,而不是替代)在与ejdyksen的建议组合(建议均不奏效本身对雅虎的服务器虽然)。

虽然,从技术上来说,这是“正确”的答案,我会离开选择ejdyksen的答案,因为他的努力表明它是一些服务器端技术细节(他的SMTP服务器和Hotmail的两个显示附件,雅虎没有)。 礼貌地给予好评ejdyksen的答案,而不是像他那样大部分跑腿的。



文章来源: Correct email format for Email with Plain, HTML and an Attachment in SMTP?
标签: smtp