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

Newsun

Believe in Good
Thành viên thân thiết
Tham gia
20/4/2008
Bài viết
9.433
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:
asp_126.gif
Để 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.
asp_127.gif
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
 
×
Quay lại
Top