Pages

2015/11/11

C# の SmtpClient クラスから Gmail を送信する

C# からメールを送信する
C# の System.Net.Mail クラスにある SmtpClient で Gmail を送信する方法。.NET Framework 4.5 の文字化け対策も実装。

SmtpClient クラスからメール送信

using System;
using System.Net;
using System.Net.Mail;
using System.Text;

var fromAddress = new MailAddress("hoge@gmail.com");
var toAddress = new MailAddress("hoge@exsample.com");
string pwd = "abcd1234";
var smtp = new SmtpClient
{
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(fromAddress.Address, pwd)
};

using (var message = new MailMessage(fromAddress, toAddress)
{
    Subject = EncodeMailHeader(EncodeMailHeader("メール送信テスト")),
    Body = "テストメールです。",
    BodyEncoding = Encoding.GetEncoding("iso-2022-jp"),
})
{
    smtp.Send(message);
}

エンコード用のメソッドは以下のとおり。
static string EncodeMailHeader(string subject)
{
    Encoding enc = Encoding.GetEncoding("iso-2022-jp");
    string strBase64 = Convert.ToBase64String(enc.GetBytes(subject));
    return string.Format("=?{0}?B?{1}?=", "iso-2022-jp", strBase64);
}
こちらを参考にしました。
.NET Framework 4.5 の System.Net.Mail で日本語の件名を ISO-2022-JP の Base64 でエンコードして送信する方法
http://blogs.technet.com/b/exchangeteamjp/archive/2012/10/05/3524293.aspx
Related Posts Plugin for WordPress, Blogger...