我正在使用 Amazon SES SendRawEmail API,因此我需要一个 MailMessage 作为内存流。
我在 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 生成内存流,则会出现编码问题。
对于编码问题,我的意思是“ø”显示为