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();
}
}
}