用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