我正在尝试使用.Net的SmtpClient将二进制文件作为电子邮件附件发送。默认情况下,我看到的行为是附件作为Base64字符串发送。因此,如果我在磁盘上有类似3mb文件的东西,当我附加它并邮寄它时,结果是在4-5mb .eml文件之间。
我快速浏览了TransferEndcoding
Enum,希望得到像'二进制'这样的东西,但没有这样的运气。但是,如果我选择8位编码,附件/消息会更小,文件的完整性也很好。我已经测试了几次,使用不同的文件,它似乎有效。
我担心的是:
数据是8位字符,可能代表国际 总行长度不超过1000 8位的字符 字符。有关此8位MIME传输的详细信息 扩展,请参阅IETF RFC 6152。
什么决定了线长?如果幸运的话,编码的二进制数据碰巧有一个8位字符,在我的示例中每1000个或更少字符映射到一个新行.....但使用8位编码不是一个可行的解决方案电子邮件附件?
答案 0 :(得分:0)
Content-Transfer-Encoding: 8bit
适用于国际文字,而非图片,视频,zip文件或任何其他二进制内容。
如果您希望能够通过SMTP发送包含二进制内容的邮件,则需要使用Content-Transfer-Encoding: binary
,这是使用System.Net.Mail.SmtpClient无法实现的。
要发送二进制内容,您需要使用其他邮件库,例如MailKit(由我编写)。实际上,我认为.NET的任何其他邮件库都不支持SMTP BINARY扩展。