[C#] EMailを送信する方法(System.Net.Mail)


Devlopment note / C#    作成日付 : 2020/04/22 19:00:42   修正日付 : 2020/04/22 19:00:42

こんにちは。明月です。


この投稿はC#でEMailを送信する方法(System.Net.Mail)に関する説明です。


プロジェクトでよく使う機能と思えばEMailを送ることではないかと思います。例えば、ウェブページでユーザ登録からパスワード初期化、お知らせのメールなど様々で使います。

C#ではメールを送信する方法がいろいろありますが、その中で.Net FrameworkのSystem.Net.Mailを使う方法があります。


System.Net.Mailの場合は.Net Frameworkの基本の機能なので別にNugetを利用してライブラリを連携する必要がないです。

using System;
using System.Net.Mail;
using System.IO;
class Program
{
  // 実行関数
  static void Main(string[] args)
  {
    MailMessage mail = new MailMessage();
    try
    {
      // 送信するメールアドレス、名、エンコード(UTF-8)
      mail.From = new MailAddress("nowonbun@gmail.com", "nowonbun", System.Text.Encoding.UTF8);
      // 宛先メールアドレス追加
      mail.To.Add("nowonbun@gmail.com");
      // 宛先(CC)メールアドレス追加
      mail.CC.Add("nowonbun@gmail.com");
      // 宛先(BCC)メールアドレス追加
      mail.Bcc.Add("nowonbun@gmail.com");
      // メールタイトル
      mail.Subject = "Hello world";
      // 本文内容(HTMLタイプ)
      mail.Body = "<html><body>hello wrold</body></html>";
      // 本文内容フォーマットタイプ(falseの場合はテキストタイプ)
      mail.IsBodyHtml = true;
      // メールタイトルと本文内容のエンコードタイプ(UTF-8)
      mail.SubjectEncoding = System.Text.Encoding.UTF8;
      mail.BodyEncoding = System.Text.Encoding.UTF8;
      // 添付ファイル(Stream과 파일 이름)
      mail.Attachments.Add(new Attachment(new FileStream(@"D:\test1.zip", FileMode.Open, FileAccess.Read), "test1.zip"));
      mail.Attachments.Add(new Attachment(new FileStream(@"D:\test2.zip", FileMode.Open, FileAccess.Read), "test2.zip"));
      // smtp サーバ設定
      SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com");
      // smtp ポート
      SmtpServer.Port = 587;
      // smtp 認証
      SmtpServer.Credentials = new System.Net.NetworkCredential("GoogleID", "パスワード");
      // SSL 使用可否
      SmtpServer.EnableSsl = true;
      // 送信
      SmtpServer.Send(mail);
    }
    finally
    {
      // 添付ファイルのStreamのリソースを返却
      foreach (var attach in mail.Attachments)
      {
        attach.ContentStream.Close();
      }
    }
    Console.WriteLine("Press any key...");
    Console.ReadKey();
  }
}

ソースは作成しました。

その後、SMTPサーバーを設定しましょう。私の場合はGoogleメールを利用します。

Google mail - https://support.google.com/a/answer/176600?hl=ja


先にクロームに接続して右上のアカウント管理に行きましょう。(ログインができなかった状況なら先にログインしてから。)


アカウント管理に移動して安全性の低いアプリのアクセスのタブに移動します。


安全性の低いアプリの許可を有効にします。


このチェックをしないと外部からグーグルメールを使用できないようにすることです。なので、idやpwの漏れがなければそんなに問題はありません。


上のソースを実行してメールを送信しましょう。


プログラムが正常に実行されました。


GMailのメールの受信トレイを見れば、メールが届いたことを確認できます。


ここまでC#でEMailを送信する方法(System.Net.Mail)に関する説明でした。


ご不明なところや間違いところがあればコメントしてください。

最新投稿