當專案開發到一定規模的時候,會希望系統發生Exception、整理異常資料發送Email給自己,而不是人工時時刻刻去log檔案查看。
SendGrid提供基於雲的電子郵件遞送服務,可幫助企業通過電子郵件發送。
主要應用在:
主要使用 SendGrid 這樣第三方Email服務,比起自行架設郵件伺服器,穩固又牢靠,重要的是還不用自己維護郵件伺服器
。另外業務使用量不大的情況,SendGrid免費贈送每個月25000封
可以滿足一般需求量。
下面介紹 Azure 上通過 SendGrid 快速建立帳號,並通過它發送郵件:
登錄 Azure 的管理網站,點開 +建立資源 > 搜尋SendGrid Email Deilvery
:
在建立畫面中,填寫基本資料後,測試專案情況點開Pricing tier選擇F1 free
方案,SendGrid很貼心提供每月25000封免費郵件
:
SendGrid避免濫用情況,需要做信箱驗證。最後點選Create
完成建立:
SendGrid賬號創建完成後,可以在 所有設定 查看 Configurations
信息,找到帳號
複製下來,後面在使用 SendGrid 發送郵件時,需要用到它做為SMTP 服務器驗證:
這邊有寫好的主控台程式程式,示範遇到除0錯誤時候
發送郵件通知工程師:
using System;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
namespace LogAndEmailDemo
{
class Program
{
private static readonly string _username = "azure sendGrid上帳號";
private static readonly string _password = "密碼";
private static NetworkCredential _credentials = new NetworkCredential(_username, _password);
static void Main(string[] args)
{
try
{
int zero = 0;
var error = (99 / zero);
}
catch (Exception e)
{
SendEamil("寄信Email地址",e.ToString());
}
}
private static void SendEamil(string toMailAddress, string errorContent)
{
try
{
// Email寄信者、內容
MailMessage mailMsg = new MailMessage();
mailMsg.To.Add(new MailAddress(toMailAddress));
mailMsg.From = new MailAddress(_username, _username);
mailMsg.Subject = "我是標題";
mailMsg.AlternateViews.Add(AlternateView.CreateAlternateViewFromString($"<h1>我是錯誤內容</h1><br>{errorContent}", null, MediaTypeNames.Text.Html));
// 初始化Smtp客戶端 > 寄信
SmtpClient smtpClient = new SmtpClient("smtp.sendgrid.net", Convert.ToInt32(587));
smtpClient.Credentials = _credentials;
smtpClient.Send(mailMsg);
}
catch (Exception ex)
{
Console.WriteLine($"===={DateTime.Now.ToString("yyyyMMdd HHmmSS")},寄信失敗====");
Console.WriteLine(ex.Message);
}
}
}
}
運行程式測試後
登登登,成功接收到發生Exception的信件:
【1】NuGet-SendGrid套件發信,使用方式可以參考GitHub-Sendgrid-Csharp:
【2】查看報表:假如想要查看本月發信數量,可以到 SendGrid Account > Manage 查看
雖然代碼不多,但示範如何在發生Exception時使用 SendGrid 發送電子郵件幫助工程師,希望對IT邦友有幫助。