SendGrid是一個第三方的解決郵件發送服務的提供商,在國外使用的比較廣泛。國內相似的服務是SendCloud.
SendGrid提供的發送郵件方式主要是兩種, 一種是SMTP API, 一種是Web Api. SMTP API是一種比較簡單的方式,只要咱們準備好Mail Message, 直接發送到SendGrid的郵件服務器就能夠了,SendGrid的郵件服務器會幫咱們投遞。另一種是Web Api的方式。git
通常來講,不少三方的服務器提供商都會禁止連接外部25端口,這樣你就沒有辦法鏈接SendGrid的SMTP服務器發送郵件了。在這種狀況下,Web API就是一個很好的選擇。SengGrid官方有較爲詳細的SMTP API Demo. Demo的地址是 https://github.com/sendgrid/sendgrid-csharp 因爲沒有Web API的Demo, 本身花時間本身寫了一份,如今共享出來https://github.com/justrun1983/sendgrid-csharp-webapigithub
代碼中使用了RestSharp, 一個很是方便在.Net中使用的訪問Restful API的工具包。一個完整的發送郵件的代碼以下, 包含cc, bcc和附件。web
public class WebApiRestSharp { private const string ApiWebSite = "https://sendgrid.com"; private const string ApiUrlAddress = "api/mail.send.json"; public static void SendNormalHelloWorldEmail() { var client = new RestClient(ApiWebSite); var request = new RestRequest(ApiUrlAddress, Method.POST); request.AddParameter("api_user", Config.SendGridName); request.AddParameter("api_key", Config.SendGridPassword); request.AddParameter("to[]", Config.ToEmail); request.AddParameter("cc[]", Config.ToEmail); request.AddParameter("bcc[]", Config.ToEmail); request.AddParameter("subject", "Test"); request.AddParameter("from", "test@test.me"); request.AddParameter("text", "HelloWorld1"); request.AddFile("files[2.txt]", @"C:\1.txt"); // execute the request var response = client.Execute(request); var content = response.Content; // raw content as string } }