Gửi mail trong ASP.NET
Gử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:
Còn đây là behind code:
Đế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:
Và lúc đó code gửi mail của chúng ta sẽ như sau:
Code phần giao diện:
<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.
<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>
Còn đây là behind code:
private void 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.
{
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();
}
Đế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()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 ý.
{
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();
}
11 nhận xét:
enable SSL = "true" là thế nào vậy bạn??
@cuong hoang tuan
SSL=true có nghĩa là bạn sẽ mã hóa nội dung thư được gửi đi.
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
@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
can phai using them thu vien gi nua ko ban
@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
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?
@Nặc danh
trong nháy "" của mình là thẻ < br > nha
@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 :)
@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
@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
Đăng nhận xét