You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
using System; using System.Net; using System.Net.Mail; using System.Text; using System.Threading;
namespace NFine.Code { public class MailHelper { /// <summary>
/// 邮件服务器地址
/// </summary>
public string MailServer { 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>
public int Post { get; set; }
public MailHelper(string _MailServer,string _MailUserName,string _MailPassword,string _MailName,int _Post) { MailServer = _MailServer; MailUserName = _MailUserName; MailPassword = _MailPassword; MailName = _MailName; Post = _Post; }
/// <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(); // 接收人邮箱地址
if (!string.IsNullOrEmpty(to)) { string[] TOList = to.Split(','); foreach(string item in TOList) { message.To.Add(new MailAddress(item)); } } 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, Post); smtpclient.Credentials = new System.Net.NetworkCredential(MailUserName, MailPassword); //SSL连接
smtpclient.EnableSsl = enableSsl; smtpclient.Send(message); LogEntity logEntity = new LogEntity(); logEntity.F_ModuleName = "发邮件"; logEntity.F_Type = "SendMail"; var LoginInfo = OperatorProvider.Provider.GetCurrent(); logEntity.F_Account = LoginInfo.UserCode; logEntity.F_NickName = LoginInfo.UserName; logEntity.F_Result = false; logEntity.F_Description = "发邮件成功"; new LogApp().WriteDbLog(logEntity); return true; } catch (Exception ex) { LogEntity logEntity = new LogEntity(); logEntity.F_ModuleName = "发邮件"; logEntity.F_Type = "SendMail"; var LoginInfo = OperatorProvider.Provider.GetCurrent(); logEntity.F_Account = LoginInfo.UserCode; logEntity.F_NickName = LoginInfo.UserName; logEntity.F_Result = false; logEntity.F_Description = "发邮件失败:"+ex.Message; new LogApp().WriteDbLog(logEntity); 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, 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(); } } }
|