using System.Collections.Generic;
using System.IO;
using System.Net.Mail;
namespace RoadFlow.Utility
{
public class Mail
{
///
/// 邮件实体
///
public class MailModel
{
///
/// 接收人
///
public string ReceiverName { get; set; }
///
/// 接收邮件地址
///
public string ReceiveMail { get; set; }
///
/// 邮件主题
///
public string Subject { get; set; }
///
/// 邮件内容(可带HTML格式)
///
public string Contents { get; set; }
///
/// 邮件附件绝对地址(多个用逗号隔开)
///
public string Attachments { get; set; } = string.Empty;
}
///
/// 邮件服务器
///
private string _smtpServer;
///
/// 邮件服务器端口
///
private int _port;
///
/// 是否使用SSL
///
private bool _enableSsl;
///
/// 邮件帐号
///
private string _account;
///
/// 邮件密码
///
private string _password;
///
/// 发件人
///
private string _senderName;
///
/// 发件人邮件地址
///
private string _senderMail;
public Mail(string smtpServer, int port, bool enableSsl, string account, string password, string senderName, string senderMail)
{
_smtpServer = smtpServer;
_port = port;
_enableSsl = enableSsl;
_account = account;
_password = password;
_senderName = senderName;
_senderMail = senderMail;
}
public Mail()
{
_smtpServer = Config.MailServer;
_port = Config.MailPort;
_enableSsl = Config.MailEnableSsl;
_account = Config.MailAccount;
_password = Config.MailPassword;
_senderName = Config.MailSenderName;
_senderMail = Config.MailSenderMail;
}
///
/// 发送邮件
///
/// 收件人姓名
/// 收件人邮箱地址
/// 邮件主题
/// 邮件内容(可带HTML格式)
/// 邮件附件绝对地址(多个用逗号隔开)
public void Send(string receiver, string mail, string subject, string content, string files = "")
{
MailModel mailModel = new MailModel()
{
ReceiverName = receiver,
ReceiveMail = mail,
Subject = subject,
Contents = content,
Attachments = files
};
Send(new List() { mailModel });
}
///
/// 发送邮件
///
///
public void Send(MailModel mailModel)
{
Send(mailModel);
}
///
/// 一次发多个邮件
///
///
public void Send(List mails)
{
if (_smtpServer.IsNullOrWhiteSpace() || _account.IsNullOrWhiteSpace() || _password.IsNullOrWhiteSpace()
|| _senderName.IsNullOrWhiteSpace() || _senderMail.IsNullOrWhiteSpace() || mails == null || mails.Count == 0)
{
return;
}
// 邮件对象
MailMessage emailMessage;
// smtp客户端对象
using (SmtpClient client = new SmtpClient())
{
client.Host = _smtpServer;// 邮件服务器及帐户信息
if (_port > 0)
{
client.Port = _port;
}
if (_enableSsl)
{
client.EnableSsl = true;
}
System.Net.NetworkCredential Credential = new System.Net.NetworkCredential
{
UserName = _account,
Password = _password
};
client.Credentials = Credential;
// 发件人
MailAddress sendMail = new MailAddress(_senderMail, _senderName);
foreach (var mail in mails)
{
MailAddress receiveMail = new MailAddress(mail.ReceiveMail);
emailMessage = new MailMessage(sendMail, receiveMail)
{
Subject = mail.Subject,
Body = mail.Contents,
IsBodyHtml = true,
SubjectEncoding = System.Text.Encoding.Default,
BodyEncoding = System.Text.Encoding.Default
};
if (!mail.Attachments.IsNullOrWhiteSpace())
{
foreach (string file in mail.Attachments.Split(','))
{
if (file.IsNullOrWhiteSpace() || !System.IO.File.Exists(file))
{
continue;
}
Attachment attachment = new Attachment(File.OpenRead(file), Path.GetFileName(file));
emailMessage.Attachments.Add(attachment);
}
}
try
{
client.Send(emailMessage);
}
catch
{
}
}
}
}
}
}