Gửi email là một yêu cầu phổ biến trong các ứng dụng web ASP.NET Core. Trong bài viết này, chúng ta sẽ tìm hiểu cách gửi email có tệp đính kèm bằng cách sử dụng open source component phổ biến – MailKit.
![]() |
Hướng dẫn code chức năng gửi mail trong .NET Core |
Các bước thực hiện code chức năng gửi mail sẽ tóm gọn trong 5 bước đơn giản sau đây:
1. Cài đặt MailKit NuGet package
![]() |
Cài đặt MailKit NuGet package |
using MailKit.Net.Smtp;
using MimeKit;
2. Chuẩn bị email để gửi
MimeMessage message = new MimeMessage();
MailboxAddress from = new MailboxAddress("Admin",
"[email protected]");
message.From.Add(from);
MailboxAddress to = new MailboxAddress("User",
"[email protected]");
message.To.Add(to);
message.Subject = "This is email subject";
Như code trên, ta thấy có sử dụng lớp MailboxAddress để xây dựng địa chỉ người gửi và địa chỉ người nhận. Tham số đầu tiên cho hàm tạo MailboxAddress là tên hiển thị của địa chỉ email, tham số thứ hai là chính địa chỉ email. Bạn nên thay đổi chúng theo thiết lập của bạn.
Thuộc tính Subject cho biết chủ đề hay tiêu đề của email.
3. Thêm nội dung email và các tệp đính kèm
BodyBuilder bodyBuilder = new BodyBuilder();
bodyBuilder.HtmlBody = "<h1>Hello World!</h1>";
bodyBuilder.TextBody = "Hello World!";
Như bạn thấy, chúng ta sử dụng class BodyBuilder. Nó có hai thuộc tính là HtmlBody và TextBox tương ứng với HTML version và text version của email.
IHostingEnvironment env = null;
public HomeController(IHostingEnvironment env)
{
this.env = env;
}
...
bodyBuilder.Attachments.Add(env.WebRootPath + "\file.png");
Như bạn có thể thấy, đoạn code trên ta thêm đính kèm file.png vào email nằm dưới wwwroot. Vì vậy, ta đưa vào một đối tượng IHostingEnosystem và sử dụng thuộc tính WebRootPath của nó để lấy đường dẫn.
Sau đó, ta thêm các file vào đối tượng BodyBuilder đã tạo trước đó.
Khi BodyBuilder đã sẵn sàng, chúng ta có thể tạo một phần thân MimeMessage từ nó như sau:
message.Body = bodyBuilder.ToMessageBody();
Phương thức ToMessageBody() sẽ tạo một nội dung email HTML hoặc text và các tệp đính kèm.
4. Kết nối với SMTP server
SmtpClient client = new SmtpClient();
client.Connect("smtp_address_here", port_here, true);
client.Authenticate("user_name_here", "pwd_here");
Ở đây, ta tạo một instance cho lớp SmtpClient đại diện cho một client đến một SMTP server. Chúng ta gọi phương thức Connect() của nó và truyền địa chỉ máy chủ SMTP và SMTP port. Tham số Boolean thứ ba cho biết kết nối có yêu cầu SSL hay không.
Cấu hình SMTP Gmail
![]() |
Bật chức năng xác minh 2 bước |
Sau đó, bạn lấy Mật khẩu ứng dụng
![]() |
Nhấn vào mật khẩu ứng dụng |
Bạn tìm kiếm ô Chọn ứng dụng
![]() |
Tiến hành chọn ứng dụng |
Tiếp theo, bạn chọn vào tuỳ chọn “Khác (Tên tuỳ chỉnh)”
![]() |
Chọn ứng dụng khác |
Ở đây, bạn đặt tên bất kỳ chẳng hạn như hình dưới đây:
![]() |
Chọn tên bất kỳ cho ứng dụng |
Sau đó, bạn nhấn nút “Tạo”. Trên màn hình máy tính sẽ hiện mật khẩu, bạn chỉ cần lưu lại mật khẩu này để dùng cấu hình SMTP Gmail.
![]() |
Thiết lập mật khẩu cho ứng dụng |
- SMTP Server: smtp.gmail.com
- TLS/SSL: Required
- SMTP Port: 587
- SMTP Password: Mật khẩu Gmail của bạn.
- SMTP Username: tên Gmail mà bạn dùng để tạo mật khẩu ứng dụng ở trên
5. Gửi email
client.Send(message);
client.Disconnect(true);
client.Dispose();
Lời kết
Mình sẽ viết một bài ví dụ về code trong .Net Core ở phần tới. Chúc các bạn thành công.Hieu Ho.