Gửi mail bằng ASP.NET MVC

Khi thiết kế website cho khách hàng các bạn sẽ rất thường xuyên gặp phải yêu cầu dạng như sau: tạo một form booking và sau khi khách hàng book tự động gửi mail xác nhận đơn hàng cho khách hàng, điều này rất có ích cho một website bán hàng bởi nó giúp hàng hàng yên tâm rằng đơn hàng của họ đã được gửi cho bạn.

Trong bài viết này mình sẽ hướng dẫn các bạn cách gửi mail cho khách hàng trong trường hợp trên, các bạn có thể linh hoạt ứng dụng nó cho các trường hợp khác, và mail từ người gửi là Gmail, hòm thư được sử dụng phổ biến nhất hiện nay.

Trước hết các bạn cần khai báo thư viện System.Net.Mail để tiến hành gửi mail bằng .NET.


using System.Net.Mail

Tạo nội dung cho mail cần gửi, mail được gửi thường là dạng HTML nên các bạn có thể sử dụng các cú pháp HTML bình thường để thiết kế mail, ở đây mình sử dụng StringBuilder để tạo phần nội dung cần gửi mail:


StringBuilder Body = new StringBuilder();
Body.Append("<p>Cảm ơn quý khách đã sử dụng sản phẩm của chúng tôi, chúng tôi sẽ liên lạc lại cho quý khách trong thời gian sớm nhất:</p>");
Body.Append("<table>");
Body.Append("<tr><td colspan='2'><h4>Thông tin khách hàng</h4></td></tr>");
Body.Append("<tr><td>Họ và tên:</td><td>Đỗ Huy Hoàng/td></tr>");
Body.Append("<tr><td>Số điện thoại:</td><td>016446xxxx</td></tr>");
Body.Append("<tr><td>Địa chỉ:</td><td>số 4, đường Hổ Lốn, phường Trốn, Hà Nội</td></tr>");
Body.Append("<tr><td>Email:</td><td>Hoang.hd.h@gmail.com</td></tr>");
Body.Append("<tr><td>Nguồn khách:</td><td>Google.com</td></tr>");
Body.Append("</table>")

Các bạn có thể thấy ở trên biên Body chứa các đoạn mã HTML chứa nội dung cho mail cần gửi.

Sau đó các bạn tiến hành cài đặt cho mail cần gửi với các thông số như sau:

MailMessage mail = new MailMessage();
mail.To.Add(mail khách hàng ở đây);
mail.From = new MailAddress(yourFromMail);
mail.Subject = "Tiêu đề của mail được gửi";
mail.Body = Body.ToString();// phần thân của mail ở trên
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.UseDefaultCredentials = true;
smtp.Credentials = new System.Net.NetworkCredential(email,password);// tài khoản Gmail của bạn
smtp.EnableSsl = true;
smtp.Send(mail);

Như vậy các bạn chỉ cần đặt toàn bộ đoạn mã trên ở trong Controller nơi cần gửi mail là các bạn có thể gửi mail đi rồi. Nếu các bạn có nhu cầu gửi thêm một mail khác thì khởi tạo một mail mới và thông số mới để gửi tương tự như trên : MailMessage mail2= new MailMessage() hoặc có thể sử dụng vòng lặp để gửi mail nhưng lưu ý không nên gửi quá nhiều mail trong 1 thời điểm, Gmail sẽ coi bạn spam và khóa tài khoản của bạn đó 😀

Good luck!

Comments

comments