Gửi mail trong ASP.NET

gui mail trong aspnetGửi mail là một tính năng không thể thiếu trong lập trình web. Khi gửi người dùng đăng kí, mua hàng, lấy lại mật khẩu hoặc liên hệ thì gửi mail là điều cần thiết. Hôm nay mình sẽ giới thiệu cho các bạn cách gửi mail thông qua server mail của gmail. Vì đây chỉ là demo cách gửi mail nên mình sẽ làm đơn giản và các bạn tự phát triển thêm theo ý riêng nha.
Code phần giao diện:

<div>
            <table>
                <tr>
                    <td colspan="2"><asp:Label ID="lbMessage" runat="server" /></td>
                </tr>
                <tr>
                    <td>To</td>
                    <td><asp:TextBox ID="txtTo" runat="server" /></td>
                </tr>
                <tr>
                    <td>Subject</td>
                    <td><asp:TextBox ID="txtSubject" runat="server" /></td>
                </tr>
                <tr>
                    <td>Content</td>
                    <td><asp:TextBox ID="txtContent" runat="server" TextMode="MultiLine" /></td>
                </tr>
                <tr>
                    <td></td>
                    <td><asp:Button ID="btnSend" runat="server" Text="Send" onclick="btnSend_Click"
                            style="height: 26px" /></td>
                </tr>
            </table>
    </div>
 Khá đơn giản chỉ có 5 controls chính: 1 label thông báo, 1 text ghi mail người nhận, 1 text subject, 1 text content, và 1 button send.
Còn đây là behind code:

private void SendMail()
    {
        string to = txtTo.Text;
        int port = 587;
        string subject = txtSubject.Text;
        string content = txtContent.Text;
        SmtpClient client = new SmtpClient();
        client.EnableSsl = true;
        client.Port = port;
        client.Host = "smtp.gmail.com";
        client.Credentials = new NetworkCredential("timeislifesgift@gmail.com", "p@sswprd");
        MailAddress from = new MailAddress("timeislifesgift@gmail.com", "Webzoomz");
        MailAddress toAddress = new MailAddress(to);
        MailMessage message = new MailMessage(from, toAddress);
        message.Body = content;
        message.Subject = subject;
        try
        {
            client.Send(message);
            lbMessage.Text = "Send mail sucessfully!!!";
        }
        catch (Exception ex)
        {
            lbMessage.Text = ex.Message;
        }
    }
 
    protected void btnSend_Click(object sender, EventArgs e)
    {
        SendMail();
    }
Trong behind code này các bạn chú ý là đến port và host gửi mail. Đây là 2 thành phần quan trọng, ngoài ra các bạn chú ý đến tên email của bạn và password.
Đến đây chúng ta đã có thể gửi email thành công.

Đây là cách ghi trực tiếp các thông tin vào file code. Nhưng để tăng tính bảo mật và dễ dàng truy cập và sửa đổi chúng ta nên đưa thông tin mail server vào trong file Web.config:

<system.net>
    <mailSettings>
      <smtp deliveryMethod="Network" from="timeislifesgift@gmail.com">
        <network host="smtp.gmail.com"
                 userName="timeislifesgift@gmail.com"
                 password="p@ssword" port="587"
                 defaultCredentials="false"
                 enableSsl="true" />
      </smtp>
    </mailSettings>
  </system.net>

Và lúc đó code gửi mail của chúng ta sẽ như sau:

private void SendMail()
    {
        string to = txtTo.Text;
        int port = 587;
        string subject = txtSubject.Text;
        string content = txtContent.Text;
        SmtpClient client = new SmtpClient();
        MailAddress from = new MailAddress("timeislifesgift@gmail.com", "Webzoomz");
        MailAddress toAddress = new MailAddress(to);
        MailMessage message = new MailMessage(from, toAddress);
        message.Body = content;
        message.Subject = subject;
        try
        {
            client.Send(message);
            lbMessage.Text = "Send mail sucessfully!!!";
        }
        catch (Exception ex)
        {
            lbMessage.Text = ex.Message;
        }
    }
 
    protected void btnSend_Click(object sender, EventArgs e)
    {
        SendMail();
    }
Hi vọng với chút ít kiến thức trên bạn có thể xây dựng cho mình được một form gửi mail đúng ý.

11 nhận xét:

enable SSL = "true" là thế nào vậy bạn??

lúc 21:52 14 tháng 8, 2012 comment-delete

@cuong hoang tuan
SSL=true có nghĩa là bạn sẽ mã hóa nội dung thư được gửi đi.

lúc 22:51 14 tháng 8, 2012 comment-delete

Tôi chạy bị lỗi làm ơn xem hộ tôi với
Và đây là lỗi khi chạy

The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.5.1 Authentication Required. Learn more at

lúc 07:24 16 tháng 11, 2012 comment-delete

@Văn DũngThông tin về tài khoản mail của bạn nhập có thể chưa chính xác, bạn thử kiểm tra lại nha :D

lúc 15:31 17 tháng 11, 2012 comment-delete

can phai using them thu vien gi nua ko ban

lúc 07:09 17 tháng 4, 2013 comment-delete

@Thanh Tung Le
Bạn có thể giải thích giúp mình cụ thể hơn là mã hóa nội dung là hình thức như thế nào ko bạn, mình chưa hiểu cái này lắm. :D

Anonymous
lúc 03:14 30 tháng 6, 2013 comment-delete

Bạn ơi nếu mình muốn gửi nhiều nội dung như: họ tên, email, địa chỉ... và mỗi cái đấy ở một dòng thì mình phải làm thế nào? mình đã thêm thẻ message.Body += "Họ tên" + txtHoTen.Text +"
";
message.Body += "Địa chỉ" + txtDiaChi.Text;
mà ko thấy đượ, nó cứ hiển thị hết ở một dòng, mà lại còn hiển thị ra cả
nữa?

Anonymous
lúc 03:36 30 tháng 6, 2013 comment-delete

@Nặc danh
trong nháy "" của mình là thẻ < br > nha

Anonymous
lúc 03:37 30 tháng 6, 2013 comment-delete

@Nặc danhbạn hãy thử khai báo 1 biến chứ nội dung chẳng hạn content+= "Họ tên"+txtHoten; Sau đó thì gán cái content cho cho message.Body xem :)

lúc 03:39 30 tháng 6, 2013 comment-delete

@Nặc danhnếu muốn "
" cũng như các thẻ html có hiệu lực thì bạn nhớ thêm message.IsBodyHtml=true; với cái này bạn thậm chí có thể truyền content như 1 trang html tới inbox của người khác

lúc 03:42 30 tháng 6, 2013 comment-delete

@Anh Hàng Xóm
mình làm đc rồi cảm ơn bạn, thêm mỗi cái message.IsBodyHtml=true; là đc. thế mà ko biết cứ loay hoay mãi :D

Anonymous
lúc 03:14 1 tháng 7, 2013 comment-delete

Đăng nhận xét