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 { } } } } } }