GmailのSMTPサーバーを利用してメールを送信する

GmailのSMTPサーバーを利用してメールを送信するコードを紹介します。

概要

GmailのSMTPを利用してメールを送信します。Gmailでのメール送信はSSLの接続が必要で、メール送信時にSMTP認証も必要になります。この記事ではSSLを有効にしてSMTP認証でGmailのSMTPサーバーを利用してメールを送信するコードを紹介します。

事前準備

こちらの記事を参照して「安全性の低いアプリを許可」を有効に設定します。
(別の方法として2段階認証を有効にし、アプリパスワードを利用する方法があります。)

プログラム

Windows Formアプリケーションを作成します。

UI

下図のUIを作成します。ボタンとテキストボックスを1つずつ配置します。
GmailのSMTPサーバーを利用してメールを送信する:画像1

コード

下記のコードを記述します。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net.Mail;

namespace SimpleSmtp
{
  public partial class FormMain : Form
  {
    public FormMain()
    {
      InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
      MailMessage msg = new MailMessage();
      msg.From = new MailAddress("(送信元メールアドレス)", "送信者名");
      msg.To.Add(new MailAddress("(宛先メールアドレス)", "宛先名"));
      msg.Subject = "メッセージ件名";
      msg.Body = "メール本文";
      
      SmtpClient sc = new SmtpClient();

      sc.Host = "smtp.gmail.com";
      sc.Port = 587;
      sc.DeliveryMethod = SmtpDeliveryMethod.Network;
      sc.Credentials = new System.Net.NetworkCredential("(送信するGmailのアカウントメールアドレス)", "(パスワード)");
      sc.EnableSsl = true;

      sc.Send(msg);
      msg.Dispose();

      textBox1.Text+="メールを送信しました\r\n";
    }
  }
}

解説

MailMessage, SmtpClient を利用したSMTPを利用してメールを送信するコードの基本動作についてはこちらの記事を参照して下さい。

メールアドレスやパスワードを設定した具体的な記述例は下記になります。

    MailMessage msg = new MailMessage();
    msg.From = new MailAddress("testmail@ipentec.jp", "自動送信メール");
    msg.To.Add(new MailAddress("example@gmail.com", "YourName"));
    msg.Subject = "メッセージ件名";
    msg.Body = ""メール本文です。";
      
    SmtpClient sc = new SmtpClient();

    sc.Host = "smtp.gmail.com";
    sc.Port = 587;
    sc.DeliveryMethod = SmtpDeliveryMethod.Network;
    sc.Credentials = new System.Net.NetworkCredential("example@gmail.com", "ABCD12345");
    sc.EnableSsl = true;

    sc.Send(msg);
    msg.Dispose();

    textBox1.Text+="メールを送信しました\r\n";

MailMessageで送信するメールのメッセージや送信者、宛先を設定します。メールの送信は SmtpClient オブジェクトで実行します。SmtpClient オブジェクトに送信先ポートやSSLの有効化の設定をします。
System.Net.NetworkCredential() のコンストラクタの第一引数に送信するgMailのGoogleアカウントのメールアドレスを与えます。第二引数にGoogleアカウントのパスワードを与えます。
メール送信はSmtpClientオブジェクトのSendメソッドで実行します。

実行結果

プロジェクトを実行します。下図のウィンドウが表示されます。
GmailのSMTPサーバーを利用してメールを送信する:画像2

[button1]をクリックします。正常にメールが送信できると、「メールを送信しました」のメッセージがテキストボックスに表示されます。
GmailのSMTPサーバーを利用してメールを送信する:画像3

メールの宛先のメールアカウントを確認します。新しいメールが届いていることがわかります。
GmailのSMTPサーバーを利用してメールを送信する:画像4

メールを確認します。プログラムのコード設定したサブジェクトや本文、送信者名などが設定されていることが確認できます。C#のプログラムから送信されたメールです。
GmailのSMTPサーバーを利用してメールを送信する:画像5

C#のプログラムでGmailのSMTPを利用してメールが送信できました。

AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2018-05-21
Copyright © 1995–2025 iPentec all rights reserverd.