using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Net.Mail;
using System.Text;
using System.Threading.Tasks;
/*****************************
* 概要:邮箱
* 设计者:DuanXuWen
* 设计时间:20180309
* 版本:0.1
* 修改者:
* 修改时间:
* ***************************/
namespace Common
{
public class MailHelper
{
/// <summary>
/// 无参构造
/// </summary>
public MailHelper() { }
/// <summary>
/// 有参构造
/// </summary>
/// <param name="mailSubject"></param>
/// <param name="host"></param>
/// <param name="port"></param>
/// <param name="mailFrom"></param>
/// <param name="mailFromPwd"></param>
/// <param name="mailTo"></param>
public MailHelper(string mailSubject, string host, int port, string mailFrom, string mailFromPwd, string mailTo)
{
MailSubject = mailSubject;
Host = host;
Port = port;
MailFrom = mailFrom;
MailFromPwd = mailFromPwd;
MailTo = mailTo;
}
#region 邮箱配置
//邮件主题
private static string _mailSubject = ConfigurationManager.AppSettings["MailSubject"].ToString();
/// <summary>
/// 邮件主题
/// </summary>
public static string MailSubject
{
get
{
return _mailSubject;
}
set
{
_mailSubject = value;
}
}
//邮箱服务器地址
private static string _host = ConfigurationManager.AppSettings["Host"].ToString();
/// <summary>
/// 邮箱服务器地址
/// </summary>
public static string Host
{
get
{
return _host;
}
set
{
_host = value;
}
}
//邮箱端口
private static int _port = Convert.ToInt32(ConfigurationManager.AppSettings["Port"]);
/// <summary>
/// 邮箱端口
/// </summary>
public static int Port
{
get
{
return _port;
}
set
{
_port = value;
}
}
//邮箱发件人
private static string _mailFrom = ConfigurationManager.AppSettings["MailFrom"].ToString();
/// <summary>
/// 邮箱发件人
/// </summary>
public static string MailFrom
{
get
{
return _mailFrom;
}
set
{
_mailFrom = value;
}
}
//邮箱发件人密码
private static string _mailFromPwd = ConfigurationManager.AppSettings["MailFromPwd"].ToString();
/// <summary>
/// 邮箱发件人密码
/// </summary>
public static string MailFromPwd
{
get
{
return _mailFromPwd;
}
set
{
_mailFromPwd = value;
}
}
//邮件接收人
private static string _mailTo = ConfigurationManager.AppSettings["MailTo"].ToString();
/// <summary>
/// 邮件接收人
/// </summary>
public static string MailTo
{
get
{
return _mailTo;
}
set
{
_mailTo = value;
}
}
#endregion
/// <summary>
/// 发送邮箱(默认配置)
/// </summary>
/// <param name="Subject">主题</param>
/// <param name="strMailBody">内容</param>
public static void SendMsg(string strMailBody)
{
List<string> mailList = new List<string>();
string[] mailToArray = MailTo.Split(',');
foreach (var item in mailToArray)
{
mailList.Add(item);
}
MailMessage mailMessage = MailHelper.CreateMail(MailSubject, strMailBody, MailFrom, mailList, false, null, null);
MailHelper.Send(mailMessage, Port, Host, MailFrom, MailFromPwd);
}
/// <summary>
/// 创建邮件
/// </summary>
/// <param name="Subject">主题</param>
/// <param name="strMailBody">内容</param>
/// <param name="From">发件人</param>
/// <param name="mailTo">收件人</param>
/// /// <param name="IsBodyHtml">邮件正文是否为html格式</param>
/// <param name="mailBcc">密抄人</param>
/// <param name="Attachments">附件</param>
/// <returns></returns>
public static MailMessage CreateMail(string subject, string strMailBody, string from, List<string> mailTo, bool isBodyHtml, List<string> mailBcc = null, Attachment attachment = null)
{
try
{
MailMessage mailMessage = new MailMessage();
mailMessage.Subject = subject;
mailMessage.Body = strMailBody;
mailMessage.From = new MailAddress(from);
foreach (var to in mailTo)
{
mailMessage.To.Add(to);
}
if (mailBcc != null && mailBcc.Count > 0)
{
foreach (var bcc in mailBcc)
{
mailMessage.Bcc.Add(bcc);
}
}
if (attachment != null)
{
mailMessage.Attachments.Add(attachment);
}
mailMessage.Priority = MailPriority.Normal;
mailMessage.IsBodyHtml = isBodyHtml;
return mailMessage;
}
catch (Exception ex)
{
string msg = "邮件相关错误!详细信息:主题:" + subject + "内容:" + strMailBody + "发件人:" + from + "收件人:" + mailTo + "邮件正文是否为html格式:" + isBodyHtml + "密抄人:" + mailBcc + "附件:" + attachment + "";
string logAddress = System.Windows.Forms.Application.StartupPath + "\\Log\\ErrorMsg\\" + DateTime.Now.ToString("yyyyMMdd") + ".log";
LogHelper.WriteLog(ex, logAddress, false, msg);
return null;
}
}
/// <summary>
/// 发送
/// </summary>
/// <param name="mailMsg">邮件主体</param>
/// <param name="Port">端口</param>
/// <param name="Host">服务器</param>
/// <param name="From">发送人</param>
/// <param name="Pwd">发送人密码</param>
public static void Send(MailMessage mailMsg, int port, string host, string from, string Pwd)
{
try
{
if (mailMsg.To.Count > 0)
{
SmtpClient smtpClient = new SmtpClient();
smtpClient.Port = port;
smtpClient.Host = host;
smtpClient.Credentials = new System.Net.NetworkCredential(from, Pwd);
smtpClient.Send(mailMsg);
}
}
catch (Exception ex)
{
string msg = "邮件相关错误!详细信息:邮件主体:" + mailMsg + "端口:" + port + "服务器:" + host + "发送人:" + from + "发送人密码:" + Pwd + "";
string logAddress = System.Windows.Forms.Application.StartupPath + "\\Log\\ErrorMsg\\" + DateTime.Now.ToString("yyyyMMdd") + ".log";
LogHelper.WriteLog(ex, logAddress, false, msg);
}
}
}
}