【发布时间】:2016-11-02 18:31:45
【问题描述】:
所以我尝试了 2 种不同的方法来使用 c# 创建内联图像:
选项 2 更糟糕的是,它没有出现在我的任何测试客户端(outlook 2010/2013、Samsung android 电子邮件客户端、ios 10 电子邮件客户端)上。
选项 1 几乎完美,只要没有其他附件,所有客户端都能正确显示内联图像。但是,如果您在电子邮件中添加文件附件,那么只有在 iOS 电子邮件应用程序上才会出现奇怪的副作用。在 iOS 上,客户端将内嵌图像和附件都显示为附件(内嵌图像显示为图标)。
我试图通过在 Outlook 中编写带有嵌入图像和附件的电子邮件来解决这个问题。 Outlook 生成看起来像两个常规附件(查看来自 Outlook 和 dotNet 生成的电子邮件的原始消息数据),图像被标记为内联内容处置。这适用于我所有的测试客户。除非使用 .Net Mail 消息 api 来复制它(选项 2),否则它不起作用。我不知道这里发生了什么。
编辑 1
有趣的是,当使用选项 2 时,电子邮件正文被编码为 base64。这与 Outlook 客户端的管理方式不同。正文是纯文本,内联附件图像是唯一以 bas64 编码的内容。
编辑 2 使用选项 2 时设置以下属性会使正文再次变为纯文本:
mail.BodyEncoding = Encoding.UTF8;
mail.BodyTransferEncoding = TransferEncoding.QuotedPrintable;
【问题讨论】: