gpt4 book ai didi

smtp - 使用纯文本、HTML 和 SMTP 附件的电子邮件的正确电子邮件格式?

转载 作者:行者123 更新时间:2023-12-04 02:55:08 27 4
gpt4 key购买 nike

问题:

我试图复制 yahoo 和 hotmail 使用的基于 SMTP 的 header /电子邮件,并通过 Telnet 发送它们,但我收到的电子邮件没有显示包含的附件​​,但它确实正确显示了消息。

我怀疑是什么原因造成的:

我相信我的电子邮件格式不正确,尽管在网上搜索了大量文章(以及试图掌握复杂且难以阅读的 RFC),但我还没有找到任何有用或简明的文章来解释如何使用这三者(Plain , HTML 和一个附件)在 SMTP 中正确。我花了几天时间试图改变代码,但我要么只得到消息(无附件),要么得到整个 SMTP 数据体显示(包括边界、html 代码等)。

我希望通过这个问题实现的目标:

我希望有人可以查看我在下面收集的信息,并能够告诉我我遗漏了什么(或者电子邮件的格式到底有什么不正确)。

调试信息:

我将发送到 SMTP 服务器的信息复制到文件中,并将信息粘贴到 pastebin(删除/编辑了任何个人信息 - 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 尝试检索电子邮件时缺少 multipart/alternative。我到底做错了什么?服务器期望什么?

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

最佳答案

我清理了多部分边界说明符并得到了这个,它在我的服务器上对我有用(我在这里省略了 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 )。这就解释了为什么附件被遗漏了。

关于smtp - 使用纯文本、HTML 和 SMTP 附件的电子邮件的正确电子邮件格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10873269/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com