Video

728x90 AdSpace

Gửi mail trong ASP.NET

By Anh Hàng Xóm - Chủ Nhật, 8 tháng 7, 2012 9 Comments
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 ý.

9 nhận xét to ''Gửi mail trong ASP.NET"

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

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

    Trả lờiXóa
  3. @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

    Trả lờiXóa
  4. can phai using them thu vien gi nua ko ban

    Trả lờiXóa
  5. @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

    Trả lờiXóa
  6. 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?

    Trả lờiXóa
  7. @Nặc danh
    trong nháy "" của mình là thẻ < br > nha

    Trả lờiXóa
  8. @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 :)

    Trả lờiXóa
  9. @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

    Trả lờiXóa