| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398 |
- 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
- {
- /// <summary>
- /// 邮件公用类
- /// </summary>
- public class EmailHelper
- {
- #region 属性
- /// <summary>
- /// 邮箱账号(默认为发送者邮箱的账号)
- /// </summary>
- public string UserEmail { get; set; } = "";
- /// <summary>
- /// 邮箱密码(默认为发送者邮箱的密码),默认格式UTF8
- /// </summary>
- public string Password { get; set; } = "";
- /// <summary>
- /// 发送者邮箱
- /// </summary>
- public string From { get; set; } = "";
- /// <summary>
- /// 发送者名称
- /// </summary>
- public string FromName { get; set; } = "";
- /// <summary>
- /// 接收者邮箱列表
- /// </summary>
- public string[] To { get; set; } = { "" };
- /// <summary>
- /// 抄送者邮箱列表
- /// </summary>
- public string[] Cc { get; set; } = { "" };
- /// <summary>
- /// 秘抄者邮箱列表
- /// </summary>
- public string[] Bcc { get; set; } = { "" };
- /// <summary>
- /// 邮件主题
- /// </summary>
- public string Subject { get; set; } = "";
- /// <summary>
- /// 邮件内容
- /// </summary>
- public string Body { get; set; } = "";
- /// <summary>
- /// 是否是HTML格式
- /// </summary>
- public bool IsBodyHtml { get; set; } = true;
- /// <summary>
- /// 附件列表
- /// </summary>
- public string[] Attachments { get; set; } = { "" };
- /// <summary>
- /// 邮箱服务类型(Pop3,SMTP,IMAP,MAIL等),默认为SMTP
- /// </summary>
- public string ServiceType { get; set; } = "SMTP";
- /// <summary>
- /// 邮箱服务器
- /// </summary>
- public string Host { get; set; } = "";
- /// <summary>
- /// 邮箱服务器端口
- /// </summary>
- public int Port { get; set; } = 25;
- /// <summary>
- /// 邮箱优先级
- /// </summary>
- public MailPriority MailPriority { get; set; } = MailPriority.High;
- /// <summary>
- /// 邮件编码格式
- /// </summary>
- public Encoding Encoding { get; set; } = Encoding.UTF8;
- #endregion
- /// <summary>
- /// 发送邮件
- /// </summary>
- 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;
- }
- }
- }
- /// <summary>
- /// 发送邮件验证码
- /// </summary>
- public class EmailCodeHelper
- {
- #region 字段属性
- /// <summary>
- /// 验证码有效期(分钟)
- /// </summary>
- public int TimeOut { get; set; } = 10;
- /// <summary>
- /// 随机验证码
- /// </summary>
- public string CheckCode { get; } = new Random().Next(100000, 999999).ToString();
- /// <summary>
- /// 邮箱用户名(在RSDB文件中<email></email>配置)
- /// </summary>
- public string Email { get; set; }
- /// <summary>
- /// 邮箱用户名(在RSDB文件中<emailPassWord></emailPassWord>配置)
- /// </summary>
- public string EmailPwd { get; set; }
- /// <summary>
- /// 服务器主机名
- /// </summary>
- public string Host { get; set; }
- /// <summary>
- /// 服务器端口号
- /// </summary>
- public int Port { get; set; }
- /// <summary>
- /// 发件人邮箱地址
- /// </summary>
- public string FromMailAddressStr { get; set; } = "iwbNet@iwbNet.com";
- /// <summary>
- /// 发件人名称
- /// </summary>
- public string FromMailName { get; set; } = "玮博";
- /// <summary>
- /// 收件人地址(多个地址以“,”隔开)
- /// </summary>
- public string ToMailAddressStr { get; set; }
- /// <summary>
- /// 收件人地址数组
- /// </summary>
- private string[] ToMailAddressStrArr => ToMailAddressStr.Split(',');
- /// <summary>
- /// 邮件标题
- /// </summary>
- public string EMailSubject { get; set; } = "用户验证码(请勿回复此邮件)";
-
- /// <summary>
- /// 邮件内容
- /// </summary>
- public string EMailBody
- {
- get
- {
- if (string.IsNullOrEmpty(_eMailBody))
- _eMailBody = "亲爱的用户<br/><br/>您好,您本次验证码为:" + CheckCode + ",该验证码有效期为" + TimeOut + "分钟,切勿告诉他人。";
- return _eMailBody;
- }
- set { _eMailBody = value; }
- }
- private string _eMailBody;
- /// <summary>
- /// 邮件编码格式
- /// </summary>
- public Encoding Encoding { get; set; }
- /// <summary>
- /// 邮箱优先级
- /// </summary>
- public MailPriority MailPriority { get; set; }
- /// <summary>
- /// 邮件
- /// </summary>
- public EmailHelper EMailMsg { get; set; }
- #endregion
- #region 构造函数
- /// <summary>
- /// 构造函数()
- /// </summary>
- /// <param name="toMailAddressStr">收件人地址</param>
- /// <param name="host">服务器主机名(端口默认25)</param>
- public EmailCodeHelper(string toMailAddressStr, string host)
- {
- ToMailAddressStr = toMailAddressStr;
- Host = host;
- }
- /// <summary>
- /// 构造函数(重新指定服务器端口)
- /// </summary>
- /// <param name="toMailAddressStr">收件人地址</param>
- /// <param name="host">主机名</param>
- /// <param name="port">端口名,默认25</param>
- public EmailCodeHelper(string toMailAddressStr, string host, int port)
- : this(toMailAddressStr, host)
- {
- Port = port;
- }
- /// <summary>
- /// 构造函数重载(重写用户名,密码)
- /// </summary>
- /// <param name="toMailAddressStr">收件人地址</param>
- /// <param name="host">主机名</param>
- /// <param name="port">端口名</param>
- /// <param name="email">邮箱用户名</param>
- /// <param name="emailPwd">邮箱密码</param>
- public EmailCodeHelper(string toMailAddressStr, string host, int port, string email, string emailPwd)
- : this(toMailAddressStr, host, port)
- {
- Email = email;
- EmailPwd = emailPwd;
- }
- /// <summary>
- /// 构造函数重载(重写邮件内容、用户名,密码)
- /// </summary>
- /// <param name="toMailAddressStr">收件人地址</param>
- /// <param name="host">主机名</param>
- /// <param name="port">端口名</param>
- /// <param name="subject">邮件标题</param>
- /// <param name="body">邮件内容</param>
- /// <param name="fromMailAddressStr">发件人地址</param>
- public EmailCodeHelper(string toMailAddressStr, string host, int port, string subject, string body, string fromMailAddressStr)
- : this(toMailAddressStr, host, port)
- {
- EMailSubject = subject;
- EMailBody = body;
- FromMailAddressStr = fromMailAddressStr;
- }
- /// <summary>
- /// 构造函数重载(重写邮件内容)
- /// </summary>
- /// <param name="toMailAddressStr">收件人地址</param>
- /// <param name="host">主机名</param>
- /// <param name="port">端口名</param>
- /// <param name="subject">邮件标题</param>
- /// <param name="body">邮件内容</param>
- /// <param name="fromMailAddressStr">发件人地址</param>
- /// <param name="email">邮箱用户名</param>
- /// <param name="emailPwd">邮箱密码</param>
- 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
- /// <summary>
- /// 创建邮件
- /// </summary>
- /// <returns></returns>
- public EmailHelper CreateMailMsg()
- {
- return new EmailHelper()
- {
- UserEmail = Email,
- Password = EmailPwd,
- Host = Host,
- Port = Port,
- Subject = EMailSubject,
- Body = EMailBody,
- From = FromMailAddressStr,
- FromName = FromMailName,
- To = ToMailAddressStrArr,
- };
- }
- /// <summary>
- /// 发送邮件
- /// </summary>
- /// <returns></returns>
- public bool Send()
- {
- EMailMsg = CreateMailMsg();
- return EMailMsg.Send();
- }
- }
- }
|