筆記一下 SendGrid 驗證寄件者的543
情境
有新使用者要共用 SendGrid 帳號額度,需要提供 API Key
子帳號
SendGrid 有提供子帳號功能
從 設定 > Subuser 管理 > Create New Subuser
這樣就可以切到子帳號再新增 API Key
信件紀錄與報表分析之類的也會跟主帳號切分開來
Sender 識別與驗證也是獨立的
也就是子帳號要用的 domain 要自己再透過 cname 驗證一遍
如果有多個IP也可以指定某個IP給子帳號來跟主帳號分開
當然如果只有一組IP就只能共用了
API Key
首先可以針對新的單位創建新的 API Key
從 Azure SendGrid 一路點到管理畫面左邊 Settings > API Key
發送格柵 (sendgrid.com) > 新增 API Key
新增時需要設定該 API 的權限範圍
沒甚麼事情了話應該只要開寄信權限就好了
寄件者驗證
實際使用該API寄信時可能會遇到以下錯誤 (40x)
Invalid from email address
因為寄件人的 domain 需要先進行所有權驗證
不然就會被擋並觸發以上錯誤
所以需要到設定>寄件人驗證>驗證 Domain > I am not sure.
這邊會需要設定你信箱 domain 的 CName 到 Sendgrid.net
大概長這樣,三條都要設定,設定後按完成,之後就可以發信了。
Add all of these records to I'm+Not+Sure's DNS section.
TYPE | HOST | VALUE | ||
---|---|---|---|---|
CNAME | eeeee.jakeuj.com | Copy | uuuuu.wwww.sendgrid.net | Copy |
CNAME | s1._domainkey.jakeuj.com | Copy | s1.domainkey.uuuuu.wwww.sendgrid.net | Copy |
CNAME | s2._domainkey.jakeuj.com | Copy | s2.domainkey.uuuuu.wwww.sendgrid.net | Copy |
技術文件
範例程式碼
PM> Install-Package SendGrid
// using SendGrid's C# Library | |
// https://github.com/sendgrid/sendgrid-csharp | |
using SendGrid; | |
using SendGrid.Helpers.Mail; | |
using System; | |
using System.Threading.Tasks; | |
namespace Example | |
{ | |
internal class Example | |
{ | |
private static void Main() | |
{ | |
Execute().Wait(); | |
} | |
static async Task Execute() | |
{ | |
var apiKey = Environment.GetEnvironmentVariable("NAME_OF_THE_ENVIRONMENT_VARIABLE_FOR_YOUR_SENDGRID_KEY"); | |
var client = new SendGridClient(apiKey); | |
var from = new EmailAddress("test@example.com", "Example User"); | |
var subject = "Sending with SendGrid is Fun"; | |
var to = new EmailAddress("test@example.com", "Example User"); | |
var plainTextContent = "and easy to do anywhere, even with C#"; | |
var htmlContent = "<strong>and easy to do anywhere, even with C#</strong>"; | |
var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent); | |
var response = await client.SendEmailAsync(msg); | |
} | |
} | |
} |