Gửi Mail sử dụng ASP.NET

Trong chuyên mục 'Thủ thuật Internet' đăng bởi Newsun, 14/10/2009. — 5.331 Lượt xem

  1. Newsun

    Newsun 11/11 Thành viên thân thiết

    Gửi Mail sử dụng ASP.NET

    Trong bài viết này, chúng ta sẽ học được cách gửi Mail gồm cả định dạng Text và HTML bằng cách sử dụng lớp System.Web.Mail.

    Trước khi nghiên cứu về các đoạn mã, chúng ta sẽ nói về các lớp MailMessageSmtpMail mà chúng ta sử dụng để gửi Mail.
    1. System.Web.Mail.MailMessage:
    Dưới đây là thuộc tính của lớp này:
    [​IMG]
    Để sử dụng lớp này, chúng ta khởi tạo một đối tượng mới bằng Constructor không có tham số. Thiết lập một vài thuộc tính và sau đó gửi tin nhắn sử dụng phương thức tĩnh của lớpSmtpMail là phương thức Send():
    MailMessage mail = new MailMessage();

    mail.To = "receivers@email.address";
    mail.From = "senders@email.address";
    mail.BodyFormat = MailFormat.Text;
    mail.Subject = "Subject of this Email";
    mail.Body = "Body of this message.";

    SmtpMail.Send(mail);
    Trên đây là đoạn mã để tạo và gửi một đối tượng Mailmessage. Chỉ cần thay đổi một vài giá trị cho phù hợp với yêu cầu của bạn là được.
    2. System.Web.Mail.SmtpMail:
    Lớp này gửi Mail thông qua giao thức SMTP. Chúng ta sẽ tập trung và 2 phương thức tĩnh Send() mà lớp này cung cấp. Để sử dụng phương thức tĩnh này, chúng ta chỉ cần cung cấp đối tượng tham số MailMessage hợp lý và gửi.
    [​IMG]
    bây giờ, chúng ta sẽ tạo trang sendMail.aspx để áp dụng các đoạn mã bên trên.
    3. sendMail.aspx:
    Trong trang này, sẽ có một Form để chứa các thông tin của Mail. Chúng ta chỉ cần nhập các giá trị đúng và nhấn nút "Send" để gửi Mail. Các bạn hãy tham khảo đoạn mã dưới đây:
    Mã:
     
    <%@ Page Language="C#" %>
    <%@ Import NameSpace="System.Web.Mail" %>
     
    <script runat="server">
            protected void Page_Load(Object Sender, EventArgs e) {
                if(!Page.IsPostBack)
                Message.Text = "Sending E-Mail using ASP.NET";
            }
     
            protected void Send_Email(Object Sender, EventArgs e) {
                MailMessage mail = new MailMessage();
     
                mail.To = Request.Form["to"];
                mail.From = Request.Form["from"];
     
                if(Request.Form["format"].Equals("text"))
                        mail.BodyFormat = MailFormat.Text;
                else
                        mail.BodyFormat = MailFormat.Html;
     
                mail.Subject = Request.Form["subject"];
                mail.Body = Request.Form["body"];
     
                SmtpMail.Send(mail);
                Response.Flush();
     
                Message.Text = "Message Sent...<br><br>" + 
                                                "<a href=\"sendMail.aspx\">Go Back</a>";
            }
    </script>
    <html>
    <head>
    <title>Sending E-Mails using ASP.NET ( Part I )</title>
    <style>
    a { font-size:8pt; font-family:Tahoma; font-weight:normal;
    color:maroon; }
    </style>
    <link rel="stylesheet" href="css/demostyle.css">
    </head>
    <body bgcolor="white">
     
            
                    <asp:label id="Message" runat="server" />
            
     
            <% if(!Page.IsPostBack) { %>
            All fields are required.
     
            <form method="post" runat="server"> 
                [TABLE]
                        [TR]
                            [TD]From : [/TD]
                            [TD]<input type="text" name="from">[/TD]
                        [/TR]
                        [TR]
                            [TD]To : [/TD]
                            [TD]<input type="text" name="to">[/TD]
                        [/TR]
                        [TR]
                            [TD]MailFormat : [/TD]
                            [TD]
                                    <select name="format">
                                    <option value="text">Text</option>
                                    <option value="html">HTML</option>
                                    </select>
                            [/TD]
                        [/TR]
                        [TR]
                            [TD]Subject : [/TD]
                            [TD]<input type="text" name="subject" style="width:400;">[/TD]
                        [/TR]
                        [TR]
                            [TD]Body : [/TD]
                            [TD]
                                    <textarea cols="5" rows="10" name="body" style="width:400;">
                                    </textarea>[/TD]
                        [/TR]
                        [TR]
                            [TD] [/TD]
                            [TD]
                                    <input type="submit" OnServerClick="Send_Email" runat="server" 
                                    class="submit" value=" " /> Send Email!
                            [/TD]
                        [/TR]
    [/TABLE]
    </form>
    <% } %>
     
    </body>
    </html>
    
    Ta thấy rằng phương thức Send_Email() sẽ được gọi khi người sử dụng nhấn nút Send ở trong Form. trong Hàm này chúng ta sử dụng đoạn mã đã nói ở trên để tạo ra một đối tượng MailMessage và sau đó sử dụng phương thức Send() của lớp SmtpMail.
    Nhưng trong khi gửi xảy ra lỗi, thì có thể lỗi đó do dịch vụ SMTP chưa có trong hệ thống của bạn. Bạn có thể cung cấp SMTP Server của riêng bạn, như sau:
    SmtpMail.SmtpServer = "smtp.yourisp.com";
    SmtpMail.Send(mail);
    và bây giờ bạn có thể gửi Mail được rồi. Tuy nhiên trong bài này chưa bắt lỗi, nên các bạn chú ý điền đầy đủ các thông tin cần thiết nhé.
    Bạn có thể Download mã nguồn tại đây
     



Chia sẻ cùng bạn bè


Đang tải...