完整教程链接: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 ="youremail@hotmail.com" >
// <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