何かしらプログラムからSMTPサーバー経由でメールを送信することがあるかと思いますが、Microsoft365等のサービスだとスパム対策が強化され迷惑メールに振り分けられることが多くなったようです。
今回、自社HP(Wordpress)をリニューアルした際に、問い合わせフォームから送信するメールが迷惑メールになってしまうようだったので、SendGridというメール配信サービスを利用しました。
SendGridについては以下を参照ください。
sendgrid.kke.co.jp
C#からもSendGridを利用できるようでしたのでやってみました。
SendGridのアカウントを持っていない方は、SendGridのアカウントを作成してください。
不正利用されないようにちゃんとした審査があります。
SendGridでAPI Keyの発行
- SendGridにログインしたら、左のメニューのSettings→API Keysをクリックします。
- 次に画面右上の「Create API Key」ボタンをクリックします
- API Key Nameを入力して、API Key PermissionはRestricted Accessを選択します
- Access DetailsではMail Sendの下にあるMail SendをONにします
- 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を利用することでメールの到達率が高くなるのではないでしょうか。
弊社では一緒に働いてくれるプログラマー、エンジニアの方を募集しています。
未経験者も大歓迎ですので、ご興味ある方は以下よりお問い合わせください。