การใช้ SendGrid Email Template (Part 2)
จาก Part 1 ที่เราได้สร้าง Email Template กันไปแล้ว ใน Part นี้เรามาดูกันว่า เราจะใช้ SendGrid Email Template บน .Net Core Web API กันอย่างไร
เริ่มจากบันทึก SendGrid Template Id ไว้ที่ไหนซักทีก่อน โดย Email Template Id สามารถดูได้จากใต้ชื่อ Email Template ของเราในหน้า Transactional Template
จากนั้นเราก็สร้าง Web API .Net Core บน Visual Studio กัน
ในที่นี้ใช้ .Net Core Version 2.0 และ Visual Studio 2017
NuGet Packages ที่ใช้มีดังนี้
- SendGrid
- Newtonsoft.Json
- Swashbuckle.AspNetCore (Optional)
เมื่อเตรียม Project พร้อมแล้วเรามาเริ่มกันเลย
- ระบุ SendGrid API Key, Sender Name, Sender Email กันก่อน โดยเพิ่มไว้ใน “appsetting” file
2. สร้าง Json Object ที่จะถูกเรียกใช้ โดย Email Template จาก Part 1 เพื่อง่ายต่อการทำความเข้าใจ เราจะสร้าง Model ใน Controller Class เริ่มจาก Class Receipt และ ReciptItems ตามลำดับ
ใน Model Class นี้เราใช้ JsonProperty(“xxx”) ของ Newtonsoft.Json เพื่อทำให้ Serialize เป็น Json Object ตามที่เราต้องการได้ง่าย
3. เพิ่ม HTTP Post Method ชื่อ SendEmail() โดย FromBody ที่รับเข้ามามีดังนี้
4. เริ่ม Implement SendEmail Method ตามนี้เลย
(1) Get SendGrid configuration values จาก appsetting file
(2) Create SendGridClient โดยใช้ API Key
(3) Create SendGridMessage
(4) Create Sender Email Objects และ Recipient Email Objects
(5) Get Receipt Data จาก Private Method ที่ทำไว้
(6) ระบุ Sender Email Object และ Recipient Email Object ให้กับ SendGridMessage Class
(7) ระบุ SendGrid Email Template Id ให้กับ SendGridMessage Class และ ระบุ Object ที่จะใช้กับ Email Template Id นี้จาก (5)
(8) ทำการส่ง Email
(9) Return Status OK และ Response Object จากการส่ง Email
เรามาลอง Run Project กัน Project ใช้ Swagger ในการ Run
ทำการระบุ name, email และ templateId ที่เราต้องการ ใน Body ให้เรียบร้อยแล้วกด Execute เลย
ดูจาก Response Object “statusCode”: 202 คือ SendGrid ได้รับ Message แล้วกำลังรอส่งให้ผู้รับ สามารถศึกษา SendGrid Status Code เพิ่มเติมได้ ที่นี่
รอสักพัก Email ก็ส่งถึงผู้รับเรียบร้อย ตาม Email Template Id ที่เราระบุไว้
เพียงเท่านี้ก็จะได้ Web API สำหรับ ส่ง Email จาก SendGrid Email Template ได้แล้ว ง่ายไหมครับ 555
ความสามารถของ SendGrid ยังมีอีกเยอะมาก
บทความนี้ยกมาเพียงส่วนหนึ่งเท่านั้น สามารถศึกษาเพิ่มเติมได้ ที่นี่
Source Code ที่ใช้ใน บทความนี้ https://github.com/ksingh1129/SendGridTemplate.Api.git