using System; using System.Net; using System.Net.Mail; using System.Text; using MailMessage = System.Net.Mail.MailMessage; using MailPriority = System.Net.Mail.MailPriority; namespace CommonTool { /// /// 邮件公用类 /// public class EmailHelper { #region 属性 /// /// 邮箱账号(默认为发送者邮箱的账号) /// public string UserEmail { get; set; } = ""; /// /// 邮箱密码(默认为发送者邮箱的密码),默认格式UTF8 /// public string Password { get; set; } = ""; /// /// 发送者邮箱 /// public string From { get; set; } = ""; /// /// 发送者名称 /// public string FromName { get; set; } = ""; /// /// 接收者邮箱列表 /// public string[] To { get; set; } = { "" }; /// /// 抄送者邮箱列表 /// public string[] Cc { get; set; } = { "" }; /// /// 秘抄者邮箱列表 /// public string[] Bcc { get; set; } = { "" }; /// /// 邮件主题 /// public string Subject { get; set; } = ""; /// /// 邮件内容 /// public string Body { get; set; } = ""; /// /// 是否是HTML格式 /// public bool IsBodyHtml { get; set; } = true; /// /// 附件列表 /// public string[] Attachments { get; set; } = { "" }; /// /// 邮箱服务类型(Pop3,SMTP,IMAP,MAIL等),默认为SMTP /// public string ServiceType { get; set; } = "SMTP"; /// /// 邮箱服务器 /// public string Host { get; set; } = ""; /// /// 邮箱服务器端口 /// public int Port { get; set; } = 25; /// /// 邮箱优先级 /// public MailPriority MailPriority { get; set; } = MailPriority.High; /// /// 邮件编码格式 /// public Encoding Encoding { get; set; } = Encoding.UTF8; #endregion /// /// 发送邮件 /// public bool Send() { var mailMessage = new MailMessage(); try { #region 创建mailMessage //读取To 接收者邮箱列表 if (To != null && To.Length > 0) { foreach (string to in To) { if (string.IsNullOrEmpty(to)) continue; mailMessage.To.Add(new MailAddress(to.Trim())); } } //读取Cc 抄送者邮件地址 if (Cc != null && Cc.Length > 0) { foreach (var cc in Cc) { if (string.IsNullOrEmpty(cc)) continue; mailMessage.CC.Add(new MailAddress(cc.Trim())); } } //读取Attachments 邮件附件 if (Attachments != null && Attachments.Length > 0) { foreach (var attachment in Attachments) { if (string.IsNullOrEmpty(attachment)) continue; mailMessage.Attachments.Add(new Attachment(attachment)); } } //读取Bcc 秘抄人地址 if (Bcc != null && Bcc.Length > 0) { foreach (var bcc in Bcc) { if (string.IsNullOrEmpty(bcc)) continue; mailMessage.Bcc.Add(new MailAddress(bcc.Trim())); } } //读取From 发送人地址 mailMessage.From = new MailAddress(From, FromName, Encoding); //邮件标题 mailMessage.Subject = Subject; mailMessage.SubjectEncoding = Encoding; //邮件正文是否为HTML格式 mailMessage.IsBodyHtml = IsBodyHtml; //邮件正文 mailMessage.Body = Body; mailMessage.BodyEncoding = Encoding; //邮件优先级 mailMessage.Priority = MailPriority; #endregion #region 创建smtpClient //发送邮件代码实现 var smtpClient = new SmtpClient(Host,Port) { EnableSsl = true, Credentials = new NetworkCredential(UserEmail, Password), UseDefaultCredentials = false, DeliveryMethod = SmtpDeliveryMethod.Network, }; ServicePointManager.ServerCertificateValidationCallback = (obj, certificate, chain, errors) => true; #endregion //发送 smtpClient.Send(mailMessage); return true; } catch (Exception) { return false; } } } /// /// 发送邮件验证码 /// public class EmailCodeHelper { #region 字段属性 /// /// 验证码有效期(分钟) /// public int TimeOut { get; set; } = 10; /// /// 随机验证码 /// public string CheckCode { get; } = new Random().Next(100000, 999999).ToString(); /// /// 邮箱用户名(在RSDB文件中配置) /// public string Email { get; set; } /// /// 邮箱用户名(在RSDB文件中配置) /// public string EmailPwd { get; set; } /// /// 服务器主机名 /// public string Host { get; set; } /// /// 服务器端口号 /// public int Port { get; set; } /// /// 发件人邮箱地址 /// public string FromMailAddressStr { get; set; } = "iwbNet@iwbNet.com"; /// /// 发件人名称 /// public string FromMailName { get; set; } = "玮博"; /// /// 收件人地址(多个地址以“,”隔开) /// public string ToMailAddressStr { get; set; } /// /// 收件人地址数组 /// private string[] ToMailAddressStrArr => ToMailAddressStr.Split(','); /// /// 邮件标题 /// public string EMailSubject { get; set; } = "用户验证码(请勿回复此邮件)"; /// /// 邮件内容 /// public string EMailBody { get { if (string.IsNullOrEmpty(_eMailBody)) _eMailBody = "亲爱的用户

您好,您本次验证码为:" + CheckCode + ",该验证码有效期为" + TimeOut + "分钟,切勿告诉他人。"; return _eMailBody; } set { _eMailBody = value; } } private string _eMailBody; /// /// 邮件编码格式 /// public Encoding Encoding { get; set; } /// /// 邮箱优先级 /// public MailPriority MailPriority { get; set; } /// /// 邮件 /// public EmailHelper EMailMsg { get; set; } #endregion #region 构造函数 /// /// 构造函数() /// /// 收件人地址 /// 服务器主机名(端口默认25) public EmailCodeHelper(string toMailAddressStr, string host) { ToMailAddressStr = toMailAddressStr; Host = host; } /// /// 构造函数(重新指定服务器端口) /// /// 收件人地址 /// 主机名 /// 端口名,默认25 public EmailCodeHelper(string toMailAddressStr, string host, int port) : this(toMailAddressStr, host) { Port = port; } /// /// 构造函数重载(重写用户名,密码) /// /// 收件人地址 /// 主机名 /// 端口名 /// 邮箱用户名 /// 邮箱密码 public EmailCodeHelper(string toMailAddressStr, string host, int port, string email, string emailPwd) : this(toMailAddressStr, host, port) { Email = email; EmailPwd = emailPwd; } /// /// 构造函数重载(重写邮件内容、用户名,密码) /// /// 收件人地址 /// 主机名 /// 端口名 /// 邮件标题 /// 邮件内容 /// 发件人地址 public EmailCodeHelper(string toMailAddressStr, string host, int port, string subject, string body, string fromMailAddressStr) : this(toMailAddressStr, host, port) { EMailSubject = subject; EMailBody = body; FromMailAddressStr = fromMailAddressStr; } /// /// 构造函数重载(重写邮件内容) /// /// 收件人地址 /// 主机名 /// 端口名 /// 邮件标题 /// 邮件内容 /// 发件人地址 /// 邮箱用户名 /// 邮箱密码 public EmailCodeHelper(string toMailAddressStr, string host, int port, string subject, string body, string fromMailAddressStr, string email, string emailPwd) : this(toMailAddressStr, host, port, subject, body, fromMailAddressStr) { Email = email; EmailPwd = emailPwd; } #endregion /// /// 创建邮件 /// /// public EmailHelper CreateMailMsg() { return new EmailHelper() { UserEmail = Email, Password = EmailPwd, Host = Host, Port = Port, Subject = EMailSubject, Body = EMailBody, From = FromMailAddressStr, FromName = FromMailName, To = ToMailAddressStrArr, }; } /// /// 发送邮件 /// /// public bool Send() { EMailMsg = CreateMailMsg(); return EMailMsg.Send(); } } }