完整教程鏈接:ASP.Net: EshineASPNet-基於ASP.Net敏捷開發開源框架
發送通知郵件,激活賬戶或者修改密碼郵件是很常用的功能,這裏分享一種實現方式,我們先把要發送的郵件內容保存成模板,特別的,我們可以採用Html的格式來製作模板,並保存成Html文件,這樣可以很方便的查看顯示效果,發送的時候只需要做相應的文本替換即可。
如上面的圖所展示的一封郵件,其實就是一個html文本,完整代碼就不貼出來了,可以參考EshineASPNet\Web\email_changeemail.htm,這裏展示其中和C#代碼相關的部分。
<strong><span class="style3">尊敬的 <%customname%> 先生/女士,</span></strong>
<br />
<br />
<span class="style3">請點擊<a href="<%newemaillink%>"><%newemaillink%></a>激活新郵箱賬號。
如代碼展示,這裏我們設置了<%customname%>和<%newemaillink%>兩個代文本,後續我們會用實際的客戶姓名和激活鏈接來取代這2個地方。
private void SendEmail(string strName, string strne)
{
string Subject = "修改郵箱";
string strPath = System.Web.HttpContext.Current.Server.MapPath("~/email_changeemail.htm");
StreamReader sr = new StreamReader(strPath, System.Text.Encoding.Default);
StringBuilder body = new StringBuilder();
body.Append(sr.ReadToEnd());
sr.Close();
body = body.Replace("<%customname%>", strName);
body = body.Replace("<%newemaillink%>", strne);
body = body.Replace("<%date%>", DateTime.Now.ToShortDateString());
pc.SendsettingEMail(this.TextBox4.Text, Subject, body.ToString().Trim());
}
//Web.config文件中增加如下配置節:
// <system.net>
// <!--如果是第三方smtp服務器,需要指定userName 和 password,並根據host指定發件人郵件地址from
// 測試發現from值必須是userName值加上指定的smpt服務器纔行,而且是必須指定的
// 如果是本機smtp服務器,只需指定defaultCredentials="true"即可-->
// <mailSettings>
// <smtp deliveryMethod="Network" from ="[email protected]" >
// <network host="smtp.126.com" port="25" userName="youremail" password="111111/>
// </smtp>
// </mailSettings>
// </system.net>
public void SendsettingEMail(string strto, string strSubject, string strBody)
{
using (MailMessage message = new MailMessage())
{
message.To.Add(new MailAddress(strto)); //收件人郵箱
message.Subject = strSubject;//郵件主題
message.Body = strBody; //郵件正文
message.IsBodyHtml = true;
message.SubjectEncoding = System.Text.Encoding.UTF8;
message.BodyEncoding = System.Text.Encoding.UTF8;
message.HeadersEncoding = System.Text.Encoding.UTF8;
SmtpClient mailClient = new SmtpClient();
mailClient.Send(message);
}
}
上面這段代碼就是根據模板來發送郵件的代碼,我們把剛剛需要取代文本的兩個值作爲參數傳進來。首先讀取郵件模板的html文件,然後用參數做字符串替換,最後就可以發送郵件了。
發送郵件在SendsettingEMail函數裏面,這個函數有詳細的說明,在使用這個方法前首先我們需要在Web.config文件中增加mailSettings塊,在裏面定義我們發送郵件的smtp信息以及賬戶名密碼,然後在代碼引用System.Net.Mail,並使用SmtpClient來發送郵件,這樣就可以發送了。
大家可以把激活賬戶、修改密碼等保存成一個個單獨的Html模板,在需要的地方應用不同的模板即可。
本教程代碼參考
EshineASPNet\Web\safeemail.aspx
EshineASPNet\Web\App_Code\PublicClass.cs