public class MailHelper
{
public MailHelper(string MailServer, int Port, string MailUserName, string MailPassword, string MailName)
{
this.MailServer = MailServer;
this.Port = Port;
this.MailUserName = MailUserName;
this.MailPassword = MailPassword;
this.MailName = MailName;
}
/// <summary>
/// 邮件服务器地址
/// </summary>
public string MailServer { get; set; }
/// <summary>
/// 端口
/// </summary>
public int Port { get; set; }
/// <summary>
/// 用户名
/// </summary>
public string MailUserName { get; set; }
/// <summary>
/// 密码
/// </summary>
public string MailPassword { get; set; }
/// <summary>
/// 名称
/// </summary>
public string MailName { get; set; }
/// <summary>
/// 同步发送邮件
/// </summary>
/// <param name="to">收件人邮箱地址</param>
/// <param name="subject">主题</param>
/// <param name="body">内容</param>
/// <param name="encoding">编码</param>
/// <param name="isBodyHtml">是否Html</param>
/// <param name="enableSsl">是否SSL加密连接</param>
/// <returns>是否成功</returns>
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.SubjectEncoding = Encoding.GetEncoding(encoding);
message.Subject = subject; //邮箱标题
message.BodyEncoding = Encoding.GetEncoding(encoding);
message.Body = body;//邮箱内容
message.IsBodyHtml = isBodyHtml;
//message.Attachments.Add(new Attachment(@"C:\Users\sunchao\Desktop\新建 Microsoft Word 文档.docx", System.Net.Mime.MediaTypeNames.Application.Rtf)); //添加附件,第二个参数表示附件的文件类型,可以不用指定
//不被当做垃圾邮件的代码
//message.Headers.Add("X-Priority","3");
//message.Headers.Add("X-MSMail-Priority", "Normal");
//message.Headers.Add("X-Mailer", "Microsoft Outlook Express 6.00.2900.2869");
//message.Headers.Add("X-MimeOLE", "Produced By Microsoft MimeOLE V6.00.2900.2869");
//message.Headers.Add("ReturnReceipt", "1");
SmtpClient smtpclient = new SmtpClient(MailServer, Port);
smtpclient.Credentials = new System.Net.NetworkCredential(MailUserName, MailPassword);
//SSL连接
smtpclient.EnableSsl = enableSsl;
smtpclient.Send(message);
return true;
}
catch (Exception ex)
{
throw;
}
}
/// <summary>
/// 异步发送邮件 独立线程
/// </summary>
/// <param name="to">邮件接收人</param>
/// <param name="title">邮件标题</param>
/// <param name="body">邮件内容</param>
/// <param name="port">端口号</param>
/// <returns></returns>
public void SendByThread(string to, string title, string body)
{
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();
}
}
调用
//smtp.163.com
MailHelper test = new MailHelper("smtp.qq.com", 587, "xxxx@qq.com", "test1", "test2");
test.Send("xxxxx@qq.com", "test3", "<font color=\"red\">邮件测试,呵呵</font>", "UTF-8", true, true);