实际项目中,有很多地方需要使用到邮件通知,本文简要介绍如何开发一个简单的邮件发送功能。
第一步,新建一个类,类名为:MailHelper
第二步,申明邮件所需要的参数,如下:
///
/// 邮件服务器地址
///
public string MailServer { get; set; }
///
/// 用户名
///
public string MailUserName { get; set; }
///
/// 密码
///
public string MailPassword { get; set; }
///
/// 名称
///
public string MailName { get; set; }
第三部:编写同步发送邮件的方法:
///
/// 同步发送邮件
///
/// 收件人邮箱地址
/// 主题
/// 内容
/// 编码
/// 是否Html
/// 是否SSL加密连接
///
public bool Send(string to, string subject, string body, string encoding = "UTF-8", bool isBodyHtml = true, bool enableSsl = false)
{
try
{
MailMessage message = new MailMessage();
// 接收人邮箱地址
message.To.Add(new MailAddress(to));
//发送方
message.From = new MailAddress(MailUserName, MailName);
//编码
message.BodyEncoding = Encoding.GetEncoding(encoding);
message.Body = body;
//GB2312
message.SubjectEncoding = Encoding.GetEncoding(encoding);
//标题
message.Subject = subject;
message.IsBodyHtml = isBodyHtml;
SmtpClient smtpclient = new SmtpClient(MailServer, 25);//创建邮件发送实例
smtpclient.Credentials = new System.Net.NetworkCredential(MailUserName, MailPassword);
//SSL连接
smtpclient.EnableSsl = enableSsl;
smtpclient.Send(message);
return true;
}
catch (Exception)
{
throw;
}
}
第四步,添加异步发送邮件的方法:
///
/// 异步发送邮件 独立线程
///
/// 邮件接收人
/// 邮件标题
/// 邮件内容
/// 端口号
///
public void SendByThread(string to, string title, string body, int port = 25)
{
new Thread(new ThreadStart(delegate()
{
try
{
SmtpClient smtp = new SmtpClient();
//邮箱的smtp地址
smtp.Host = MailServer;
//端口号
smtp.Port = port;
//构建发件人的身份凭据类
smtp.Credentials = new NetworkCredential(MailUserName, MailPassword);
//构建消息类
MailMessage objMailMessage = new MailMessage();
//设置优先级
objMailMessage.Priority = MailPriority.High;
//消息发送人
objMailMessage.From = new MailAddress(MailUserName, MailName, System.Text.Encoding.UTF8);
//收件人
objMailMessage.To.Add(to);
//标题
objMailMessage.Subject = title.Trim();
//标题字符编码
objMailMessage.SubjectEncoding = System.Text.Encoding.UTF8;
//正文
objMailMessage.Body = body.Trim();
objMailMessage.IsBodyHtml = true;
//内容字符编码
objMailMessage.BodyEncoding = System.Text.Encoding.UTF8;
//发送
smtp.Send(objMailMessage);
}
catch (Exception)
{
throw;
}
})).Start();
}
第五步:在需要调用邮件发送的地方,调用不同的方法,传入不同的参数