0

我正在做一个需要使用 SMTP 创建自己的电子邮件服务器的项目。所有 SMTP 的东西都工作正常,但我现在正在努力发送附件。

我正在做的是我正在读取来自客户端的数据,以获取以 64 进制字符串形式出现的附件。然后我解码 base 64 字符串并将其写入一个文件,然后我的电子邮件服务器将其附加并转发给收件人。

这在发送 txt 文件时工作得很好,但是如果我在解码发生时尝试发送任何其他内容,例如 docx、图像等,它会引发异常,指出 base 64 字符串的长度无效。

当我将收到的 base 64 字符串复制并粘贴到在线转换工具中时,它们不会失败,因为当我在记事本 ++ 中查看图像文件时,我确实获得了至少部分正确内容,我看到了一些我可以看到的 xml还可以在我的在线转换工具上的解码字符串中看到。然而,在线工具确实有一些其他不匹配的东西。

发送给我时,base 64 字符串的编码方式是否存在一些差异,或者在文本文件和图像文件之间对 base 64 字符串的解码是否有不同之处。

感谢您的任何帮助,您可以提供。

4

1 回答 1

0

SMTP 不知道附件。它用于指定一条消息和一组收件人。收件人必须是有效地址,但 SMTP 并不真正关心邮件本身的外观。

你想做的是研究 MIME。MIME 是一种特定的电子邮件消息格式,允许您发送内容丰富的消息(如 HTML 而不仅仅是纯文本)或发送多部分消息,如消息和文件附件。

发送带有附件的消息将涉及构建格式适当的 MIME 消息,然后以与当前相同的方式使用 SMTP,将消息视为大文本正文,就像其他任何方式一样。只有文本的特殊格式(由邮件客户端解释,但被 SMTP 本身忽略)会有所不同。

于 2013-02-23T00:41:32.107 回答