我可以(可靠地)在SmtpClient的附件上使用TransferEncoding.EightBit吗

本文关键字:TransferEncoding EightBit SmtpClient 我可以 | 更新日期: 2023-09-27 18:30:00

我正在尝试使用.Net的SmtpClient将二进制文件作为电子邮件附件发送。默认情况下,我看到的行为是附件以Base64字符串的形式发送。因此,如果我在磁盘上有一个3mb的文件,当我附加它并邮寄它时,结果是4-5mb.eml文件。

我快速查看了TransferEndcoding枚举,希望能得到类似"二进制"的东西,但没有这样的运气。尽管如此,如果我选择8位编码,附件/消息会更小,文件的完整性也很好。我用不同的文件对它进行了几次测试,它似乎有效。

我担心的是:

数据以8位字符表示,可能代表国际总行长度不超过1000个8位的字符字符。有关此8位MIME传输的详细信息扩展,请参阅IETF RFC 6152。

是什么决定了线路长度?在我的例子中,被编码的二进制数据碰巧有一个8位字符,每1000个或更少的字符映射到一行,这只是运气吗。。。。。但是使用8位编码不是电子邮件附件的可行解决方案?

我可以(可靠地)在SmtpClient的附件上使用TransferEncoding.EightBit吗

Content-Transfer-Encoding: 8bit适用于国际文本,而不是图像、视频、zip文件或任何其他二进制内容。

如果您希望能够通过SMTP发送包含二进制内容的邮件,则需要使用Content-Transfer-Encoding: binary,这在使用System.Net.Mail.SmtpClient.时是不可能的

要发送二进制内容,您需要使用另一个邮件库,如MailKit(由我编写)。事实上,我认为.NET的任何其他邮件库都不支持SMTP BINARY扩展。

相关文章:
  • 没有找到相关文章