【发布时间】:2014-11-25 01:53:53
【问题描述】:
我正在使用 Amazon SES SendRawEmail API,因此我需要一个 MailMessage 作为 Memorystream。
我在 stackoverflow 上找到了多个 MailMessage to MemoryStream 问题的答案。
解决方案 1: 使用私有方法会导致电子邮件部分编码错误: https://stackoverflow.com/a/8826833
解决方案 2: 使用此解决方案没有编码问题,您将其发送到拾取目录,然后将其读回: https://stackoverflow.com/a/14350088
我非常不喜欢我需要写入一个临时文件才能使其正常工作的事实。 有谁知道纯 MemoryStream 解决方案如何弄乱一些编码。
我正在测试的邮件是这样的:
var mailMessage = new MailMessage();
mailMessage.Subject = "HEADER WITH SPECIAL ÆØÅ";
mailMessage.Body = "TEST";
Attachment att = new Attachment(@"C:\AttachmentWithSpecial ÆØÅ.pdf");
mailMessage.Attachments.Add(att);
mailMessage.From = new MailAddress("test@test.com", "NameÆØÅ");
mailMessage.To.Add(new MailAddress("test@test.com", "NameÆØÅ"));
总结一下:
- 如果我使用标准 SMTP 发送此消息,它看起来不错。
- 如果我使用 SendRawEmail 发送它,如果我使用解决方案 2 生成内存流看起来不错
- 如果我使用 SendRawEmail 发送它,如果我使用解决方案 1 生成内存流,则会出现编码问题。
由于编码问题,我的意思是“ø”显示为
【问题讨论】:
-
为什么不使用 SendEmail 代替? SES 允许您撰写电子邮件,并且确实支持编码。
-
据我所知,它不支持附件。 ?
-
哦,是的,您尝试过使用 StringWriter 吗? Memory Stream 可能会忽略编码,因为它使用字节作为存储。
-
您能否提供不涉及 Amazon API 的最小示例?就像生成的示例一样,有两个不同的内存流,其中一个是正确的(对于
SendRawEmail),另一个不是。
标签: c# .net amazon-web-services