Iam使用亞馬遜SES SendRawEmail API,因此我需要一個MailMessage作爲一個Memorystream。C#MailMessage流 - 編碼問題
我已經找到了幾個答案,在這裏stackoverflow MailMessage到MemoryStream問題。
解決方案1:使用使用私有方法它會導致電子郵件的部分錯誤編碼的一個: https://stackoverflow.com/a/8826833
解決方案2:沒有編碼問題,使用該解決方案,您發送到拾取目錄,然後再讀回: https://stackoverflow.com/a/14350088
我非常不喜歡這樣一個事實,即我需要寫入臨時文件才能使其正常工作。 有沒有人有任何想法如何純粹的MemoryStream解決方案可以搞砸了一些編碼。
與郵件消息IAM測試是這樣的:
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("[email protected]", "NameÆØÅ");
mailMessage.To.Add(new MailAddress("[email protected]", "NameÆØÅ"));
總結:
- 如果我發送標準SMTP此消息看起來不錯。
- 如果我是用SendRawEmail它看起來不錯,如果我使用解決方案2
- 產生的MemoryStream如果我把它用SendRawEmail它具有編碼的問題,如果我使用解決方案1
產生的MemoryStream送送隨着編碼問題我的意思是「O」顯示爲
爲什麼不使用SendEmail呢? SES允許您撰寫電子郵件,並支持編碼。 – 2013-04-16 18:42:12
正如我所見,它不支持附件。 ? – 2013-04-17 05:14:18
哦,是的,你有沒有嘗試過使用StringWriter?內存流可能會忽略編碼,因爲它使用字節作爲存儲。 – 2013-04-17 07:08:06