Amazon SES SendRawEmail API を使用しているため、メモリストリームとして MailMessage が必要です。
Stackoverflow で、MailMessage から MemoryStream への問題に対するいくつかの回答を見つけました。
解決策 1:プライベート メソッドを使用するものを使用すると、電子メールの一部が間違ってエンコードされます: https://stackoverflow.com/a/8826833
解決策 2:ピックアップ ディレクトリに送信してから読み戻すこのソリューションを使用すると、エンコードの問題は発生しません: https://stackoverflow.com/a/14350088
これを正しく機能させるために一時ファイルに書き込む必要があるという事実は非常に嫌いです。純粋な MemoryStream ソリューションがエンコーディングの一部を台無しにする方法を知っている人はいますか?
メール メッセージ iam testing は次のとおりです。
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 を使用してメモリストリームを生成すると、エンコードの問題が発生します。
エンコーディングの問題により、「ø」が次のように表示されることを意味します