C# で Gmail の SMTP サーバを使ってメールを送信する方法
C# で Gmail の SMTP サーバを使ってメールを送信する
ここでは、C# で Gmail の SMTP サーバを使ってメールを送信する方法をご説明します。
Google でアプリパスワード (App Password) を生成する
Gmail の SMTP サーバを使ってメールを送信する際に必要な、アプリパスワード (App Password) を生成します。
アプリパスワードを生成するには、2 段階認証プロセスが有効でなければならないので、していない方は先に有効にしておいてください。
Google アカウントの [セキュリティ (Security)] を選択し、[Google へのログイン (Signing in to Google)] の箇所の [アプリ パスワード (App Passwords)] を選択します。
アプリ パスワード (App Passwords) の画面で、アプリとデバイスを選択します。
今回はアプリには Mail、デバイスには Windows Computer を選択し、[生成 (GENERATE)] ボタンをクリックします。
アプリパスワードが生成され表示されるので、これを使います。
MailKit をインストールする
Visual Studio でコンソールアプリの新規プロジェクトを生成します。
SmtpClient Class のドキュメントページで紹介されている MailKit を使うので、インストールします。
ツール > NuGet パッケージ マネージャー > パッケージ マネージャーコンソールを選択します。
コンソールで Install-Package MailKit と入力して実行すると、MailKit がインストールされます。
C# で Gmail の SMTP サーバを使ってメールを送信する
C# で Gmail の SMTP サーバを使ってメールを送信するには、次のようにできます。
using MailKit.Net.Smtp;
using MimeKit;
using MailKit.Security;
namespace MailTest
{
class Program
{
static void Main(string[] args)
{
var smtpServer = "smtp.gmail.com";
var port = 587;
var user = "xxxxxxxxx@gmail.com";
var password = "xxxxxxxxxxxxxxxxx";
var fromAddress = "xxxxxxxxx@gmail.com";
var toAddress = "toaddress@gmail.com";
var subject = "Gmail SMTP Test";
var body = "これは Gmail SMTP のテストメールです。";
var isHtmlBody = false;
var message = new MimeMessage();
message.From.Add(new MailboxAddress(fromAddress, fromAddress));
message.To.Add(new MailboxAddress(toAddress, toAddress));
message.Subject = subject;
var builder = new BodyBuilder();
if (isHtmlBody)
{
builder.HtmlBody = body;
}
else
{
builder.TextBody = body;
}
message.Body = builder.ToMessageBody();
using (var client = new SmtpClient())
{
client.Connect(smtpServer, port, SecureSocketOptions.StartTls);
client.Authenticate(user, password);
client.Send(message);
client.Disconnect(true);
}
}
}
}
Gmail の SMTP サーバは smtp.gmail.com、ポートは 587 です。
user にはアプリパスワードを生成したアカウントの gmail のアドレスを、password には生成したアプリパスワードを指定します。
22 ~ 25 行目では、MimeMessageオブジェクトを生成して、メールの From、To、Subject を指定しています。
27 ~ 36 行目では、メールの Body を生成しています。テキストでも HTML でもいいように BodyBuilder を使っています。
38 ~ 44 行目が、SmtpClientクライアントを使ってメールを送信している箇所です。
Connect メソッドに上で定義した smtpServer と port を渡し、SecureSocketOptions には SecureSocketOptions.StartTls を指定しています。
Authenticateメソッドに上で定義した user と password を渡して認証しています。
Send メソッドでメールを送信して、Disconnect で切断しています。
これを実行すると、以下のようなメールが送信されました。
以上、C# で Gmail の SMTP サーバを使ってメールを送信する方法をご説明しました。