■66581 / inTopicNo.1) |
SmtpClientでのメール送信について |
□投稿者/ せんぺい (1回)-(2013/05/09(Thu) 16:14:15)
|
分類:[C#]
初めて投稿・質問します。
社内システムの一機能として、アプリからメールを送信(SmtpClientクラス使用)しています。
これまではXP、Vista、7に対応、今回8に対応することになったのですが、そのまま8で実行すると、送信されたメールの件名が文字化けしてしまいました。
ビルド環境:Windows 7、Framework 4.0
問題なく運用できている環境:Windows XP Vista 7、Framework 4.0
送信メールの件名が文字化けした環境:Windows 8、Framework 4.5(8にプリインストール済)
具体的なコードは以下のようになります。
//JISコード
Encoding enc = Encoding.GetEncoding(50220);
//MailMessageの作成
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
//送信者
msg.From = new System.Net.Mail.MailAddress(FromAdd, EncodeMailHeader(FromNm, enc));
//宛先1
msg.To.Add(new System.Net.Mail.MailAddress(ToAdd1, EncodeMailHeader(ToNm1 + "様", enc)));
//宛先2
msg.To.Add(new System.Net.Mail.MailAddress(ToAdd2, EncodeMailHeader(ToNm2 + "様", enc)));
//CC
msg.CC.Add(new System.Net.Mail.MailAddress(FromAdd, EncodeMailHeader(FromNm, enc)));
//件名
msg.Subject = EncodeMailHeader(Subject, enc);
//本文
msg.Body = Body;
//SmtpClientの作成
System.Net.Mail.SmtpClient sc = new System.Net.Mail.SmtpClient();
//SMTPサーバー
sc.Host = SmtpServer;
//SMTPポート番号
sc.Port = SmtpPort;
//メッセージ送信
sc.Send(msg);
//後始末
msg.Dispose();
private static string EncodeMailHeader(string str, Encoding enc)
{
string ret = System.Convert.ToBase64String(enc.GetBytes(str));
ret = string.Format("=?{0}?B?{1}?=", enc.BodyName, ret);
return ret;
}
下記サイトを参考にして文字化け対応を行ったのですが、やはり件名だけが文字化けします。
http://blogs.gine.jp/taka/archives/1423
原因と対処法おわかりの方がいらっしゃったら教えていただけないでしょうか。
宜しくお願いいたします。
|
|