10yroの開発日記

福岡にある株式会社10yro(トイロ)のエンジニアが書いています

C# SendGridのAPIを利用してメールを送信する

何かしらプログラムからSMTPサーバー経由でメールを送信することがあるかと思いますが、Microsoft365等のサービスだとスパム対策が強化され迷惑メールに振り分けられることが多くなったようです。

今回、自社HP(Wordpress)をリニューアルした際に、問い合わせフォームから送信するメールが迷惑メールになってしまうようだったので、SendGridというメール配信サービスを利用しました。
SendGridについては以下を参照ください。
sendgrid.kke.co.jp

C#からもSendGridを利用できるようでしたのでやってみました。
SendGridのアカウントを持っていない方は、SendGridのアカウントを作成してください。
不正利用されないようにちゃんとした審査があります。

SendGridでAPI Keyの発行

  1. SendGridにログインしたら、左のメニューのSettings→API Keysをクリックします。
  2. 次に画面右上の「Create API Key」ボタンをクリックします
  3. API Key Nameを入力して、API Key PermissionはRestricted Accessを選択します
  4. Access DetailsではMail Sendの下にあるMail SendをONにします
  5. Create & ViewsボタンをクリックするとAPI Keyが生成され、パスワードが表示されますのでコピーして保存しておいてください

Visual StudioでMailkit(メール送信ライブラリ)のインストール

メール送信にMailKitというライブラリを利用します。
Visual Studioでコンソールプロジェクトを作成して、NuGetでMailKitをインストールしてください。

メール送信

具体的なメール送信プログラムは以下となります。
送信先メールアドレス、宛先メールアドレス、認証の部分のパスワードにはSendGridで生成したAPI Keyを設定してください。
実行すればメールが送信されます。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp5
{
    internal class Program
    {
        static void Main(string[] args)
        {
            var msg = new MimeKit.MimeMessage();
            msg.From.Add(new MimeKit.MailboxAddress("テスト送信先", "from@example.com"));
            msg.To.Add(new MimeKit.MailboxAddress("テスト宛先", "to@example.com"));
            msg.Subject = "テストメール";

            var text = new MimeKit.TextPart("Plain");
            text.Text = "テスト本文\r\n改行します。";
            msg.Body = text;

            using (var client = new MailKit.Net.Smtp.SmtpClient())
            {
                try
                {
                    Console.WriteLine("メール送信 start");
                    
                    // 接続
                    client.Connect("smtp.sendgrid.net", 587, MailKit.Security.SecureSocketOptions.Auto);

                    // 認証
                    client.Authenticate("apikey", "SendGridで生成したAPI Keyのパスワード");

                    // 送信
                    client.Send(msg);

                    // 切断
                    client.Disconnect(true);

                    Console.WriteLine("メール送信 end");
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }
    }
}

まとめ

C#からSendGridのAPIを使ってメール送信するプログラムをご紹介しました。
SnedGridを利用することでメールの到達率が高くなるのではないでしょうか。

弊社では一緒に働いてくれるプログラマー、エンジニアの方を募集しています。
未経験者も大歓迎ですので、ご興味ある方は以下よりお問い合わせください。

10yro.co.jp