Giới thiệu
Chắc hẳn các bạn đã thấy khi đăng ký tài khoản, thanh toán đơn hàng thành công hay xác thực tài khoản thì các bạn đều nhận được một Email từ ứng dụng mà bạn đang sử dụng đúng không? Vậy thì hôm nay mình sẽ hướng dẫn các cách gửi trong ứng dụng lập trình. Cụ thể là trong .NET Core và C#.
Yêu cầu
Để thực hiện được bài viết này bạn cần một số yêu cầu cấu hình sau:
- HĐH Windows/Mac/Linux
- .NET 6 SDK (download)
- IDE (Ví dụ: VS Code with C# plugin, Visual Studio, JetBrains Rider)
- Tài khoản trên SendGrid (xem hướng dẫn ở dưới)
SendGrid là gì?
SendGrid là một trong số các nhà cung cấp dịch vụ Email Marketing hàng đầu thế giới. Bên cạnh đó, dịch vụ SMTP Server miễn phí của họ cũng được nhiều người sử dụng và đánh giá cao. Các dự án tại công ty mình đang làm cũng đang sử dụng SendGrid.
Sendgrid sẽ đảm bảo cho các Email bạn gửi sẽ không đánh Spam.
Flow của Send Grid

Sau khi đăng ký và ủy quyền cho Send Grid thì lúc này Send Grid thay thế bạn thực hiện các yêu cầu nghiệp vụ về Email. Ứng dụng của bạn sẽ gửi request tới Server của SendGrid. Tiếp đó SendGrid sẽ thực hiện yêu cầu đó của bạn. Đơn giản đúng không nào?
Đăng Ký SendGrid & Config
Các bạn vào đây để đăng ký tài khoản.

Next

Sau khi đăng ký xong. Các bạn để ý email và xác nhận tài khoản (nếu có) nhá.
Tiếp theo các bạn Login vào SendGrid.
Vào Settings -> API Keys -> Create API Key

Điền các thông tin cần thiết

Sau khi tạo xem các bạn Copy API Key lại nhé

Tiếp theo các bạn vào Settings -> Sender Authentication -> Verify an Address
Nếu không thấy thì các bạn vào đường dẫn https://app.sendgrid.com/settings/sender_auth/senders/new để setup Sender nhé

Điền các thông tin của bạn vào

Các bạn vào email và tiền hành Verify nhé

Tạo Application
Các bạn tạo loại Prject tùy thích như Web MVC, Web API... Ở đây mình chỉ tạo một Console App đơn giản thôi.
Sau khi tạo xong các bạn cài cho mình Nuget sau:

Tiếp theo là phần Code chính:
namespace CodeMegaSendMail
{
public static class SendMail
{
public static async Task SendAsync()
{
var apiKey = "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"; // YOUR API KEY
var from = new EmailAddress("[email protected]", "Code Mega"); // Sender Info
//var to = new EmailAddress("[email protected]", "Example User"); // Single Receiver Info
var tos = new List<EmailAddress>()
{
new EmailAddress("[email protected]", "User 1"),
new EmailAddress("[email protected]", "User 2"),
new EmailAddress("[email protected]", "User 3")
}; // List Receiver Info
var subject = "Test Send Mail"; // Email Subject
var client = new SendGridClient(apiKey);
var htmlContent = "<strong>Hello world</strong>" +
"<br>" +
"<img src='https://www.code-mega.com/images/theme/logo.png' alt='Logo' width='500' height='500'>";
//var msg = MailHelper.CreateSingleEmail(from, to, subject, "", htmlContent); // For Send Email To Single Receiver
var msg = MailHelper.CreateSingleEmailToMultipleRecipients(from, tos, subject, "", htmlContent); // For Send Email To Multi Receiver
var response = await client.SendEmailAsync(msg);
Console.WriteLine(response.StatusCode.ToString());
}
}
}
Send Grid hỗ trợ gửi Email dưới dạng HTML điều này rất hữu ích cho kinh doanh nhất là với các loại hình dịch vụ như Marketing. Các bạn hoàn toàn có thể sáng tạo Email Template cho riêng mình.
Trong đoạn code trên các bạn có thể gửi đơn lẻ cho một người dùng bằng cách bỏ comment var to = new EmailAddress("[email protected]", "Example User") và var msg = MailHelper.CreateSingleEmail(from, to, subject, "", htmlContent).
Còn trong Code mình thưc hiện gửi tới nhiều người cùng một lúc.
Kết quả đã thành công:

Các bạn cũng có thể vào trang của Send Grid để kiểm tra lịch sử Activity -> Search

Kết
Vậy là bài viết hôm nay mình đã hướng dẫn xong cho các bạn cách gửi mail bằng SendGrid trong .NET Core và C# rồi. Source code mình để ở cuối bài nh
Nếu có thắc mắc gì các bạn comment bên dưới nhé.
Cám ơn các bạn đã theo dỗi. Bye Bye và hẹn gặp lại 🤗 !!!