Hướng dẫn gửi mail smtp sử dụng code dotnet

  • Friday 31/12/2021

Hướng dẫn gửi mail smtp sử dụng code dotnet

Như các bạn đã biết, do hàm mail() khi gởi mail không cần chứng thực SMTP (khi gởi mail không cần khai báo địa chỉ gởi đi và chứng thực mật khẩu SMTP để gởi mail hợp lệ), chỉ cần khai báo địa chỉ gởi đến là có thể gởi mail thành công và chính điều này dẫn đến tình trạng server bị tổ chức chống Spam quốc tế ngăn chặn và không thể gới-nhận mail được nữa vì bị đưa vào danh sách Black List.

Do vậy, PAvietnam đã chặn hàm mail() để tránh trường hợp trên xảy ra. Tuy nhiên, chúng ta có thể gởi mail thành công từ website bằng cách thông qua thư viện SMTPClient khi cấu hình SMTP đầy đủ trong form gởi mail trên website để thực hiện gửi mail smtp sử dụng code dotnet hợp lệ.

Trường hợp sử dụng mã nguồn .Net, mọi người có thể vui lòng tham khảo hướng dẫn gửi mail smtp sử dụng code dotnet theo thông tin bên dưới để thực hiện cấu hình gửi mial thêm giúp chúng tôi.

1. Gửi mail với SMTP Server localhost

Mặc định, trên host đã được hỗ trợ sẵn server smtp của ứng dụng thì chúng ta có thể khởi tạo SMTPCLient sau đó sử dụng hàm sendmail ở trên để tham khảo gửi mail smtp sử dụng code dotnet.

Link download: https://github.com/namlt91/namle/blob/main/sendemail_smtp.aspx

Ví dụ, xây dựng phương thức tĩnh SendMailLocalSmtp như sau:

<%@ Import Namespace=”System.Net” %>
<%@ Import Namespace=”System.Net.Mail” %>
<script language=”c#” runat=”server”>

private void btnSend_Click(object sender, System.EventArgs e)
{
MailMessage mail = new MailMessage();

mail.From = new MailAddress(txtFrom.Text); //IMPORTANT: This must be same as your smtp authentication address.
mail.To.Add(txtTo.Text);

//set the content
mail.Subject = txtSubject.Text;
mail.Body = txtContent.Value;

//send the message
SmtpClient smtp = new SmtpClient(txtMailServer.Text, 25);

//IMPORANT: Your smtp login email MUST be same as your FROM address.
NetworkCredential Credentials = new NetworkCredential(txtFrom.Text, txtPass.Text);
smtp.Credentials = Credentials;

smtp.Send(mail);
lblStatus.Text = “Sent email (” + txtSubject.Text + “) to ” +txtTo.Text;
}
</script>
<html>
<body>
<table align = center>
<TR> <TD align = center colspan = 2><h3>Email From ASP.NET</h3></tr>
<form id=”MailForm” method=”post” runat=”server”>
<TR> <TD><asp:Label ID=”Label1″ runat=”server”>From Email Address:
</asp:Label>
<TD><asp:TextBox ID=”txtFrom” runat=”server”></asp:TextBox> </TR>
<TR> <TD><asp:Label ID=”lblPass” runat=”server”>Email Password:
</asp:Label>
<TD><asp:TextBox ID=”txtPass” runat=”server” TextMode=”Password” ></asp:TextBox> </TR>
<TR> <TD> <asp:Label ID=”EmailServer” runat=”server”>Email Server
</asp:Label>
<TD> <asp:TextBox ID=”txtMailServer” runat=”server”></asp:TextBox>
<TD> <font color = blue>[Ví dụ :: mail.yourdomain.com] </font><font color=red>(make sure your domain resolves to our mail server.) </font>
</TR>
<TR> <TD> <asp:Label ID=”Label2″ runat=”server”>Recipient Email Address:

</asp:Label>
<TD> <asp:TextBox ID=”txtTo” runat=”server”></asp:TextBox> </TR>
<TR> <TD> <asp:Label ID=”Label3″
runat=”server”>Subject</asp:Label>

<TD> <asp:TextBox ID=”txtSubject” runat=”server”></asp:TextBox> </TR>

<TR> <TD><asp:Label ID=”Label4″ runat=”server”>Mail Body:
</asp:Label>
<TD> <textarea runat=”server” id=”txtContent”> </textarea> </TR>

<TR><TD align = center><asp:Button ID=”btnSend” runat=”server”
Text=”Send” OnClick=”btnSend_Click”></asp:Button> </TR>
<TR> <TD colspan = 2> <asp:Label ID=”lblStatus” runat=”server” forecolor=Green Font-Size=”15″ Bold = true>
</asp:Label>
</form>
</body>
</html>

 

2. Gửi mail bằng cách sử dụng Gmail

Ngoài ra, chúng ta có thể sử dụng Gmail có địa chỉ server SMTP tại: smtp.gmail.com để có thể tạo ra SmtpClient kết nối đến Server này để gửi mail smtp sử dụng code dotnet, thông tin để kết nối cần cung cấp bao gồm:

Server SMTP: smtp.gmail.com

Cổng kết nối: 587

Ssl: phải kích hoạt

Xác thực: Phải xác thực kết nối bằng cách cung cấp tài khoản (địa chỉ email google) và password

Thực hiện tạo SMTPClient như sau:

Link download: https://github.com/namlt91/namle/blob/main/SendEmail_Gmail.zip

Tạo file SendEMail.aspx:

<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”SendEMail.aspx.cs” Inherits=”_Default” %>

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<head runat=”server”>
<title></title>
<style type=”text/css”>
body
{
font-family: Arial;
font-size: 10pt;
}
</style>
</head>
<body>
<form id=”form1″ runat=”server”>
<table border=”0″ cellpadding=”0″ cellspacing=”0″>
<tr><td style=”width: 80px”>To:</td>
<td><asp:TextBox ID=”txtTo” runat=”server”></asp:TextBox></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>Subject:</td>
<td><asp:TextBox ID=”txtSubject” runat=”server”></asp:TextBox></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td valign = “top”>Body:</td>
<td><asp:TextBox ID=”txtBody” runat=”server” TextMode = “MultiLine” Height = “150” Width = “200”></asp:TextBox></td></tr>
<tr><td>&nbsp;</td></tr>

<tr><td>File Attachment:</td><td><asp:FileUpload ID=”fuAttachment” runat=”server” /></td></tr>

<tr><td>&nbsp;</td></tr>
<tr><td>Gmail Email:</td><td><asp:TextBox ID=”txtEmail” runat=”server”></asp:TextBox></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>Gmail Password:</td><td><asp:TextBox ID=”txtPassword” runat=”server” TextMode = “Password”></asp:TextBox></td></tr>
<tr><td>&nbsp;</td></tr><tr><td></td>
<td><asp:Button Text=”Send” OnClick=”SendEmail” runat=”server” /></td></tr>
</table>
</form>
</body>
</html>

Tạo file SendEMail.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Net;
using System.Net.Mail;

public partial class _Default : System.Web.UI.Page
{
protected void SendEmail(object sender, EventArgs e)
{
string to = txtTo.Text;
string from = txtEmail.Text;
string subject = txtSubject.Text;
string body = txtBody.Text;
using (MailMessage mm = new MailMessage(txtEmail.Text, txtTo.Text))
{
mm.Subject = txtSubject.Text;
mm.Body = txtBody.Text;
if (fuAttachment.HasFile)
{
string FileName = Path.GetFileName(fuAttachment.PostedFile.FileName);
mm.Attachments.Add(new Attachment(fuAttachment.PostedFile.InputStream, FileName));
}
mm.IsBodyHtml = false;
SmtpClient smtp = new SmtpClient();
smtp.Host = “smtp.gmail.com”;
smtp.EnableSsl = true;
NetworkCredential NetworkCred = new NetworkCredential(txtEmail.Text, txtPassword.Text);
smtp.UseDefaultCredentials = true;
smtp.Credentials = NetworkCred;
smtp.Port = 587;
smtp.Send(mm);
ClientScript.RegisterStartupScript(GetType(), “alert”, “alert(‘Email sent.’);”, true);
}
}
}

 

LƯU Ý QUAN TRỌNG:

Để Gmail cho phép SmtpClient kết nối đến server SMTP của nó với xác thực là tài khoản gmail của bạn để sử dụng gửi mail smtp sử dụng code dotnet, bạn cần thiết lập tài khoản email của bạn như sau:

Vào địa chỉ https://myaccount.google.com/security

Ở menu trái chọn mục Bảo mật, sau đó tại mục Quyền truy cập của ứng dụng kém an toàn phải ở chế độ bật

Hy vọng mọi người sẽ thực hiện thành công khi xem qua hướng dẫn gửi mail smtp sử dụng code dotnet.


P.A Việt Nam cung cấp đa dạng các Plan Hosting đáp ứng yêu cầu của khách hàng
Hosting Phổ Thông
Hosting Chất Lượng Cao

Tham khảo các ưu đãi: https://www.pavietnam.vn/vn/tin-khuyen-mai/