[.net MVC C#] 使用Azure的附加元件SendGrid來發送MAIL實作筆記

用SendGrid發送MAIL蠻方便的

而且每個月有免費25000封的扣打(quota)

應該用不完有點佛心

在Azure的介面上建立SendGrid及相關設定的部分

1. 在Azure畫面的左下角點選更多服務的箭頭,在右側的選單中找到【附加元件】點選下方的【SendGrid Accounts】

2. 點選SendGrid Accounts畫面中左上方的【新增】

3. 進到剛剛新增的項目中點選【Manage】

4. 在畫面左側的管理選單中找到Setting將它展開後,點選下方的API Key

5. 在API Keys管理介面的右側,點選Create API Key

6. 這時候會在畫面中看到一組Key,就是它傳說中的API Key,把他複製起來妥善保存

注意! 在畫面中有看到一行字==>For security reasons, we cannot show it to you again

這個畫面只會顯示一次,在這之後就再也看不到API Key,只會看到這種東西【••••••••••••••••••••】

所以千萬要好好保存API Key

7. 在複製完API Key 按下Done按鈕之後,真的就看不到API Key了,就只有下面這個畫面一筆資料,右邊的API KEY欄位就是一排黑點

千萬不能心存僥倖,右側的齒輪按下去會出現編輯跟刪除,就算點了編輯還是沒辦法如願的看到API KEY,很殘忍的...

 

C#程式的部分

在寫CODE之前先確認一下有沒有安裝 SendGrid 及 SendGrid.CSharp.HTTP.Clinet

沒有裝的話就開NuGet裝一下

最後把CODE填上

public void sendMail()
{
	#region 設定MAIL內容
	StringBuilder sb = new StringBuilder("OOO的Azure SendGrid功能測試:");
	sb.AppendLine("<table border='1'>");
	sb.AppendLine("<tr><th>Hi Everyone this is my test message</th></tr>");
	sb.AppendLine("<tr><td>1. I find a nice api in Azure ,It's made easy to send mail.</td></tr>");
	sb.AppendLine("<tr><td>2. Just some nonsense by myself.</td></tr>");
	sb.AppendLine("<tr><td>3. That's all thx.</td></tr>");
	sb.AppendLine("</table>");
	var mailContent = sb.ToString();
	#endregion

	string AzureWebJobsSendGridApiKey = "填入自己的ApiKey";
	dynamic sg = new SendGridAPIClient(AzureWebJobsSendGridApiKey);
	SendGrid.Helpers.Mail.Email from = new SendGrid.Helpers.Mail.Email("OOO@outlook.com", "OOO");
	//標題
	string subject = "OOO的測試郵件";
	Email to = new Email("aaa@gmail.com");
	Content content = new Content("text/html", mailContent);
	Mail mail = new Mail(from, subject, to, content);

	Personalization personalization = new Personalization();
	//要寄副本給誰
	string[] mailcc = "bbb@gmail.com,ccc@gmail.com".Split(',');
	if (mailcc != null)
	{
		foreach (string cc in mailcc)
		{                               
			personalization.AddTo(new Email(cc));
		}
	}
	mail.AddPersonalization(personalization);

	dynamic response = sg.client.mail.send.post(requestBody: mail.Get());
}

完成! 

範例檔:

https://bitbucket.org/yu_allen/sendgridexercise