标签:
整个类的代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net.Mail;
using System.Text;
using System.IO;
namespace ZC.Common.Email
{
/// <summary>
///MailHelper 邮件操作类
/// </summary>
public class MailHelper
{
public MailHelper()
{
}
#region
/// <summary>
/// 发送邮件类
/// </summary>
/// <param name="mailTo">要发送的邮箱</param>
/// <param name="mailSubject">邮箱主题</param>
/// <param name="mailContent">邮箱内容</param>
/// <returns>返回发送邮箱的结果</returns>
public static bool SendEmail(string mailTo, string mailSubject, string mailContent)
{
// 设置发送方的邮件信息,设置发送邮件的服务器
string smtpServer = "smtp.exmail.qq.com"; //SMTP服务器,腾讯企业邮箱是默认启用的,个人的QQ要去设置启用
string mailFrom = "XXX"; //发送方的登陆用户名
string userPassword = "XXX";//发送方的登陆密码
// 邮件服务设置
SmtpClient smtpClient = new SmtpClient();
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定电子邮件发送方式
smtpClient.Host = smtpServer; //指定SMTP服务器
smtpClient.Port = 25; // QQ 端口465或587 ; tom 端口 25
smtpClient.Credentials = new System.Net.NetworkCredential(mailFrom, userPassword); //发送方用户名和密码
// 发送邮件设置
MailMessage mailMessage = new MailMessage(mailFrom, mailTo); // 发送人和收件人
mailMessage.Subject = mailSubject;//主题
mailMessage.Body = mailContent;//内容
mailMessage.BodyEncoding = Encoding.UTF8;//正文编码
mailMessage.IsBodyHtml = true;//设置为HTML格式
mailMessage.Priority = MailPriority.Low;//优先级
try
{
smtpClient.Send(mailMessage); // 发送邮件
return true;
}
catch (SmtpException ex)
{
return false;
}
}
#endregion
}
}
上面是邮件类的定义和配置,下面我们来看具体使用方法,例如如发送邮件给用户让其点击邮件内容找回密码
/// <summary>
/// 发送邮件使用方法
/// </summary>
/// <param name="mailTo">接收人Email</param>
/// <param name="mailSubject">验证码</param>
public HttpResponseMessage FindPwd(string Email,string Code)
{
var VC=Session["ValidateCode"]; //程序内部的验证码
if((VC==null||VC.ToString()!=Code)) //验证传递过来的验证码是否正确
{
return No(1,"验证码无效,请重新录入");
}
var Uc=ComUcManager.Get(new{Email}); //根据邮箱得到用户信息
if(Uc==null)
{
return No(2,"用户邮箱不存在,请确认后再试");
}
var Key=MD5.G(Uc.Password); //加密用户密码
var Url = "http://www.XXX.com/User/ResetPwd?UId=" + Uc.Id + "&Key=" + Key; //将用户表的用户Id和密码传递到修改密码页面的地址上
var C=new System.Text.StringBuilder(); //邮件内容
C.Append("<div class=‘xbody‘ style=‘width:580px; margin:0 auto;‘>");
C.Append(" <div class=‘logo‘><a href=‘http://www.XXX.com‘ target=‘_blank‘ style=‘width:153px; height:82px; background:url(http://www.XXX.com/images/logo.jpg) no-repeat; display:block;‘></a></div>");
C.Append(" <div class=‘content‘ style=‘width:580px; margin:0 auto; padding:30px 0;‘>");
C.Append(" <h4 style=‘line-height:26px; font-size:24px; color:#333; font-weight:normal;‘>亲爱的用户:</h4>");
C.Append(" <p style=‘line-height:26px; font-size:16px; color:#333; margin-top:20px;‘>您好!</p>");
C.Append(" <p style=‘line-height:26px; font-size:16px; color:#333; text-indent:2em;‘>您在<span>"+DateTime.Now.ToString("yyyy年M月d日 hh:mm:ss")+"</span>提交了邮箱 <a href=‘"+Url+"‘ style=‘line-height:26px; font-size:16px; color:#f00; text-decoration:underline;‘>找回密码</a> 请求,请点击此处修改密码.为了保证您帐号的安全,该链接有效期为24小时,并且点击一次后失效!</p>");
C.Append(" <p style=‘line-height:26px; font-size:16px; color:#333; text-align:right; margin-top:10px;‘>XXX帐号中心</p>");
C.Append(" <p style=‘line-height:26px; font-size:16px; color:#333; text-align:right;‘>"+DateTime.Now.ToString("yyyy年M月d日")+"</p>");
C.Append(" </div>");
C.Append("</div>");
if(ZC.Common.Email.MailHelper.SendEmail(Email,"XXX用户找回密码邮件",C.ToString()))
{
return Ok("找回密码邮件已发送到您的邮箱,请查收");
}
return No("发送失败,请稍后再试");
}
执行的结果是,当页面上用户触发这个发送邮件的方法时,系统会给用户发送一封邮件,内容就是上面自己定义好的,当用户查看链接并点击时(http://www.XXX.com/User/ResetPwd?UId=" + Uc.Id + "&Key=" + Key),用户将会进入网站的修改密码页面,剩下的就是在修改密码页面把用户填写的新密码去更新UId的账户密码,整个过程就这样完成了。
标签:
原文地址:http://www.cnblogs.com/huangdegen/p/4656482.html