[Record] 如何使用 SendGrid APIv3 透過 C# 寄 Email

記錄 SendGrid 如何使用 C# 寄信時,需要留意什麼設定

使用條件

  1. SendGrid 版本 - Azure Marketplace 內 Twilio SendGrid (非 Azure Service 的 SendGrid Account)
  2. 定價層 - 100 封 / 天

C# 程式碼

static async Task Main()
        {
            var apiKey = Environment.GetEnvironmentVariable("TWILIO_SendGrid_Key");
            //Check SendGrid Key
            //Console.WriteLine(TWILIO_SendGrid_Key);
            var client = new SendGridClient(apiKey);

            var msg = new SendGridMessage()
            {
                From = new EmailAddress("sender@email.com", "Sender"),
                Subject = "Sending with Twilio SendGrid is Fun",
                PlainTextContent = "and easy to do anywhere, even with C#",
                HtmlContent = "<strong>and easy to do anywhere, even with C#</strong>"
            };
            msg.AddTo(new EmailAddress("recipient@email.com", "Recipient"));
            var response = await client.SendEmailAsync(msg).ConfigureAwait(false);
            //Check HTTP Status Code
            //Console.WriteLine(response.StatusCode);
            //Console.ReadLine();
        }

程式碼參考鏈接 - https://github.com/sendgrid/sendgrid-csharp

留意

  1. 測試時需要安裝 SendGrid 與 SendGrid.Extensions.DependencyInjection  套件, 如使用 Visual Studio 可直接 NuGet 下載;
  2. 環境變數加入至使用者的環境變數即可,無法電腦全環境做使用
  3. 如寄信失敗, 建議確認 HTTP Status Response 值,測試過程中我發生 Forbidden, 檢查後發現原因為沒有講寄件者加入寄件者驗證內;

HTTP Status Forbidden 參考鏈接 - https://stackoverflow.com/questions/61139752/status-forbidden-when-sending-email-with-sendgrid

寄件者驗證

寄件者驗證在 SendGrid 的管理界面下,有針對全域或者單一使用者,我使用的的是 Gmail,故為單一使用者

單擊後將會出現需要輸入資料,切記 Reply 需要可以收信信箱,因為需要驗證帳號

至收信箱驗證,如沒有建議可以至垃圾信件內確認

完成後即可測試

如沒有設定 SPF,信件很大機會被當做垃圾信件,故可考慮進行 SFP 設定。

分級: 入門是認識, 基本是運用, 進階是混合結合
範本是已可下載或可使用的範例, 至於教程當然是學習的結晶