Gửi mail trong Asp.Net

Lâu rồi hôm nay mới lại có thời gian ngồi viết bài cho blog, hôm nay chúng ta sẽ làm một ví dụ về gửi mail trong Asp.net, nó khá đơn giản tuy nhiên khi còn là sinh viên tôi đã mất gần 1 tháng mới có thể làm được. Hi vọng với bài viết ngắn này, sẽ giúp cho một số bạn đỡ vất vả hơn khi làm chức năng này...

Chúng ta hãy tạo một project mới, trong App_Code thêm một class có tên clsEmail.cs. Mã nguồn trong class gửi mail của chúng ta như dưới đây

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

using System.Text;
using System.Net.Mail;

using System.Net;
using System.IO;


namespace SendMail
{
    public class clsEmail
    {
        public clsEmail()
        {
            //
            // TODO: Add constructor logic here
            //
        }
        public string send_Mail(string mailto, string Subject, string Contents)
        {
            try
            {
                StringBuilder sb = new StringBuilder();
                sb.Append("<html><head>");
                sb.Append("<link rel='stylesheet' type='text/css' href='theme.css' />");
                sb.Append("</head>");
                sb.Append("<body>");

                sb.Append("<table>");
                sb.Append("<tr><td>" + Contents + "</td></tr>");
                sb.Append("<tr><td>--------------------------------------------------------------------------------</td></tr>");
                sb.Append("<tr><td>© Copyright © 2013 - thuyvk.com all rights reserved</td></tr>");
                sb.Append("</table>");
                sb.Append("</body>");
                sb.Append("</html>");
                System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
                msg.From = new MailAddress("test.thuyvk@gmail.com", "Thuy.vk' Blogs", System.Text.Encoding.UTF8);
                msg.Subject = Subject;
                msg.To.Add(mailto);
                msg.Body = sb.ToString();
                msg.BodyEncoding = System.Text.Encoding.UTF8;
                msg.IsBodyHtml = true;
                msg.Priority = MailPriority.High;
                //Add the Creddentials
                SmtpClient client = new SmtpClient();
                client.Credentials = new System.Net.NetworkCredential("test.thuyvk@gmail.com", "!QAZ@WSX#EDC");
                client.Port = 587; //gmail port
                client.Host = "smtp.gmail.com";//gmail host
                client.EnableSsl = true;
                client.Send(msg);
                return "Successfull!";
            }
            catch (Exception ms)
            {
                return ms.Message;
            }
        }
    }
}

Trong ví dụ này tôi sử dụng gmail, port = 587 và host là smtp.gmail.com, nếu sử dụng webmail ví dụ như tôi đang dùng cho blog với email là info@thuyvk.com thì port = 25 và host là ip của web. Tùy vào từng email lựa chọn mà các bạn cấu hình cho đúng.

Email dùng để gửi mail ở trên tôi gán trực tiếp (client.Credentials = new System.Net.NetworkCredential("test.thuyvk@gmail.com", "!QA@WS#ED");), tuy nhiên khi sử dụng thực tế các bạn nên thêm 1 table để lưu thông tin email này, để nếu thay đổi không phải sửa lại mã nguồn.

Sau khi tạo thêm class, chúng ta hãy thêm một trang Default.aspx để thực hiện ví dụ này.

<table>
        <tr>
            <td colspan="2"><h2>Demo send mail in Asp.Net</h2></td>
        </tr>
        <tr>
            <td>Email nhận:</td>
            <td>
                <asp:TextBox ID="txtEmail" runat="server" Width="200"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td>Nội dung:</td>
            <td>
                <asp:TextBox ID="txtContent" runat="server" TextMode="MultiLine" Height="100" Width="200"></asp:TextBox>
            </td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td>
                <asp:Button ID="btSend" runat="server" Text="Gửi mail" OnClick="btSend_Click" />
            </td>
        </tr>
        <tr>
            <td colspan="2">
                <asp:Label ID="lbMS" runat="server" Text=""></asp:Label>
            </td>
        </tr>
    </table>

Trong Default.aspx.cs

using System;
using System.Web;

using SendMail;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btSend_Click(object sender, EventArgs e)
    {
        try
        {
            clsEmail _cls = new clsEmail();
            string returnCode = _cls.send_Mail(txtEmail.Text, "Demo send mail in Asp.Net", txtContent.Text);
            lbMS.Text = returnCode;
            lbMS.ForeColor = System.Drawing.Color.Green;
        }
        catch(Exception ms)
        {
            lbMS.Text = ms.Message;
            lbMS.ForeColor = System.Drawing.Color.Red;
        }
    }
}

Bây giờ, chúng ta hãy chạy thử ví dụ để xem nó hoạt động thế nào

Trong ví dụ trên tôi có tạo một địa chỉ email test.thuyvk@gmail.com để test, các bạn đừng đổi mật khẩu nhé ^.^. Code ví dụ này trong file đính kèm ở cuối bài viết, chúc các bạn thành công!

Download Source

Related Post


Xây dựng tính năng gợi ý tìm kiếm (Auto complete search) trong Asp.Net
Friday, November 1, 2013
Một tính năng rất hay được khá nhiều website áp dụng khi xử lý tìm kiếm đó là gợi ý tìm kiếm (Auto complete Search), khi gõ một vài ký tự đầu của một từ khóa trên website sẽ hiện ra droplist một số nội dung liên quan đến từ khóa cho người dùng lựa chọn, ở bài này tôi sẽ làm một ví dụ nhỏ trên Asp.net. Và nó thực sự đơn giản...
Sử dụng Ajax trong website Asp.Net
Sunday, October 27, 2013
Ajax được giới thiệu lần đầu tiên vào ngày 18/02/2005 trong một bài báo có tên AJAX : A New Approach to Web Applications của tác giả Jesse James Garrett, công ty AdapativePath. Ngay sau đó thuật ngữ AJAX được phổ biến cực kỳ nhanh chóng trong cộng đồng phát triển Web và cho đến nay nó là một trong những từ khóa được tìm kiếm nhiều nhất trên Internet.
Search

Đăng ký nhận bài mới


Category

Blog Archive