【问题标题】:Can I (Reliably) Use TransferEncoding.EightBit On An Attachment With SmtpClient?我可以(可靠地)在带有 SmtpClient 的附件上使用 TransferEncoding.EightBit 吗?
【发布时间】:2016-04-17 20:57:18
【问题描述】:

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

我快速浏览了TransferEndcoding 枚举,希望有类似“二进制”的东西,但没有这样的运气。不过,如果我选择 8 位编码,附件/消息会更小,文件的完整性也很好。我用不同的文件测试了几次,它似乎可以工作。

我担心的是:

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

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

【问题讨论】:

    标签: c# .net email encoding smtp


    【解决方案1】:

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

    如果您希望能够通过 SMTP 发送包含二进制内容的消息,则需要使用 Content-Transfer-Encoding: binary,而使用 System.Net.Mail.SmtpClient 则无法实现。

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

    【讨论】:

      猜你喜欢
      • 2013-03-08
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 2010-09-27
      • 2023-02-15
      • 2018-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多