Code C# Send Mail

Làm thế nào để viết code gửi mail trong C#? Có nhiều cách gửi mail trong C# như gửi mail từ ứng dụng Window Form, Window Service, ứng dụng Web ASP.Net.Ngoài cách gửi mail từ ứng dụng C# bạn có thể gửi mail từ Database Mail trong cơ sở dữ liệu SQL Server, Oracle...Tuy nhiên trong bài này chúng tôi sẽ hướng dẫn bạn viết chương trình gửi mail bằng C# trong Window Form.

 

Cách gửi mail (Send Mail) trong Window Form sử dụng ngôn ngữ C#:

Để gửi mail trong C# Window Form cần sử dụng thư viện :

using System.Net;

using System.Net.Mail;

Trong Window Form bạn cần sử dụng giao thức SMTP (Simple Mail Transfer Protocol) và hàm Send của SmtpClient để gửi mail.

 

Xây dựng chương trình gửi mail bằng C# trong Window Form

Ví dụ giả sử bài toán của chúng ta là cần gửi mail thông báo mỗi khi người dùng nhấn nút lưu nhập sản phẩm vào hệ thống bán hàng.Sau đó hệ thống sẽ gửi mail cho chủ cửa hàng.

Để giải quyết bài toán này chúng tôi xây dựng một ứng dựng Window Form như sau:

 

Các bước viết chương trình gửi mail bằng C# trong Window Form như sau:

1.Tạo project :

Tạo project với tên là  SendMail trong Window Form.

 

2.Tạo Form:

Tạo Form tên là Frm_SendMail.

 

 

3.Viết Code C# gửi mail (Send Mail).

- Lấy dữ liệu từ cơ sở dữ liệu và Định dạng nội dung dữ liệu dạng HTML.

Viết hàm Get_Content_HTM() để lấy thông tin dữ liệu của các sản phẩm từ cơ sở dữ liệu Database và định dạng nội dung dữ liệu dàng bảng table trong HTML để có thể gửi và nhận dữ liệu dạng bảng Table.

Ví dụ Code C#  Get_Content_HTM như sau:

private string Get_Content_HTML()
        {
            try
            {
                string Content_Body = "<font>This is testing for Product Report: </font><br><br>";
                string htmlTableStart = "<table style=\"border-collapse:collapse; text-align:center;\" >";
                string htmlTableEnd = "</table>";
                string htmlHeaderRowStart = "<tr style=\"background-color:#6FA1D2; color:#ffffff;\">";
                string htmlHeaderRowEnd = "</tr>";
                string htmlTrStart = "<tr style=\"color:#555555;\">";
                string htmlTrEnd = "</tr>";
                string htmlTdStart = "<td style=\" border-color:#5c87b2; border-style:solid; border-width:thin; padding: 5px;\">";
                string htmlTdEnd = "</td>";
                Content_Body += htmlTableStart;
                Content_Body += htmlHeaderRowStart;
                Content_Body += htmlTdStart + "Product Name" + htmlTdEnd;
                Content_Body += htmlTdStart + "Product ID" + htmlTdEnd;
                Content_Body += htmlTdStart + "Product Price" + htmlTdEnd;
                Content_Body += htmlTdStart + "Product Color" + htmlTdEnd;
                Content_Body += htmlHeaderRowEnd;

                //Lấy thông tin các nhân viên từ Database
                String Str_connect_DB = "data source=192.168.1.10;initial catalog=TestLuu; user id=sa; password=123456";
                SqlConnection conn_DB = new SqlConnection(Str_connect_DB);
                conn_DB.Open();
                String sql_ShowData = "Select * from Product_t ";
                SqlDataAdapter da = new SqlDataAdapter(sql_ShowData, conn_DB);
                DataTable dt_Products = new DataTable();
                da.Fill(dt_Products);
                dtg_Nhanvien.DataSource = dt_Products;
                conn_DB.Close();
                if (dt_Products.Rows.Count > 0)
                {
                    for (int i = 0; i <= dt_Products.Rows.Count - 1; i++)
                    {
                        Content_Body = Content_Body + htmlTrStart;
                        Content_Body = Content_Body + htmlTdStart + dt_Products.Rows[i]["ProductID"].ToString() + htmlTdEnd; 
                        Content_Body = Content_Body + htmlTdStart + dt_Products.Rows[i]["ProductName"].ToString() + htmlTdEnd; 
                        Content_Body = Content_Body + htmlTdStart + Convert.ToString(dt_Products.Rows[i]["ProductPrice"].ToString()) + htmlTdEnd; 
                        Content_Body = Content_Body + htmlTdStart + dt_Products.Rows[i]["ProductColor"].ToString() + htmlTdEnd; 
                        Content_Body = Content_Body + htmlTrEnd;
                    }
                    Content_Body = Content_Body + htmlTableEnd;
                }

                // Trả về nội dung Body với định dạng bảng Table của HTML
                return Content_Body; 

            }
            catch (Exception ex)
            {
                return null;
            }
        }

 

-Thực hiện gửi mail:

Xây dựng hàm SendEmail và sự kiện nhấn nút Send Mail như sau:

Code C# Hàm SendMail như sau:

private void SendEmail(string str_HTML)
        {
            try
            {
                MailMessage message = new MailMessage();
                SmtpClient smtp = new SmtpClient();
                message.From = new MailAddress("Wenliu.H@luxshare-ict.com");
                message.To.Add(new MailAddress("Wenliu.H@luxshare-ict.com"));
                message.Subject = "Test Send Email bằng C#";
                message.IsBodyHtml = true; // Gửi nội dung Body với định dạng HTML
                message.Body = str_HTML;
                smtp.Port = 25;
                smtp.Host = "mail.luxshare-ict.com"; //Địa chỉ host email
                smtp.EnableSsl = true;
                smtp.UseDefaultCredentials = false;
                smtp.Credentials = new NetworkCredential("Wenliu.H@luxshare-ict.com", "123456");
                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                smtp.Send(message);
            }
            catch (Exception) { }
        }

 

Code C# sự kiện click nút SendMail như sau:

 private void btn_SendMail_Click(object sender, EventArgs e)
        {
            //Nội dung cần gửi mail
            string pv_Content = Get_Content_HTML();

            //Gọi hàm gửi mail
            SendEmail(pv_Content);
        }

 

4.Kiểm tra và thử nghiệm gửi mail

Chạy chương trình và nhấn nút Send mail.Sau đó bạn mở mail để kiểm tra việc gửi và nhận mail có thành công hay không.

Dưới đây là kết quả gửi mail từ ứng dụng Window Form sử dụng C# và nhận mail của chúng tôi.