using BLL; using Model; using System; using System.Collections.Generic; using System.Linq; using System.Net.Mail; namespace FineUIPro.Web.common { public class MailHelper { /// /// 私有构造方法,不允许创建实例 /// private MailHelper() { // TODO: Add constructor logic here } /// /// SendNetMail(须配置SMTP服务器地址)(多个收件人、抄送人、附件其参数用";"隔开,最后一个不能有";") /// /// 发件人 /// 收件人(多个收件人用";"隔开,最后一个不能有";") /// 主题 /// 内容 /// 附件(多个附件用";"隔开,最后一个不能有";") /// 密码(对加密过的) /// 优先级 /// 抄送(多个抄送人用";"隔开,最后一个不能有";") /// 输出信息 public static bool SendNetMail(Email_Pop ps, string mailFrom, string[] mailTo, string mailSubject, string mailBody, string mailAttch, string mailCode, string mailPriority, string[] mailCC, out string resultMessage) { //初始化输出参数 resultMessage = ""; //发件人和收件人不为空 if (string.IsNullOrEmpty(ps.EmailYx) || mailTo == null) { resultMessage = "Please Fill Email Addresser Or Addressee . "; return false; } if (!string.IsNullOrEmpty(ps.EmailYx)) { mailFrom = ps.EmailYx; } //MailMessage email = new MailMessage(); ////MailAddress emailFrom = new MailAddress(mailFrom); ////发件人 //email.From = new MailAddress(mailFrom, ps.EmailYx);//发件人地址 ////收件人 //if (mailTo != null && mailTo.Length > 0) //{ // foreach (string send in mailTo) // { // if (!String.IsNullOrEmpty(send)) // { // email.To.Add(send); // } // } //} ////加抄送 //if (mailCC != null && mailCC.Length > 0) //{ // foreach (string cc in mailCC) // { // if (!String.IsNullOrEmpty(cc)) // { // email.CC.Add(cc); // } // } //} ////主题 //email.Subject = mailSubject; ////内容 //email.Body = mailBody; ////附件 //if (!string.IsNullOrEmpty(mailAttch)) //{ // string[] attachments = mailAttch.Split(';'); // foreach (string file in attachments) // { // System.Net.Mail.Attachment attach = new System.Net.Mail.Attachment(file, System.Net.Mime.MediaTypeNames.Application.Octet); // //为附件添加发送时间 // System.Net.Mime.ContentDisposition disposition = attach.ContentDisposition; // disposition.CreationDate = System.IO.File.GetCreationTime(file); // disposition.ModificationDate = System.IO.File.GetLastWriteTime(file); // disposition.ReadDate = System.IO.File.GetLastAccessTime(file); // //添加附件 // email.Attachments.Add(attach); // } //} //优先级 //email.Priority = (mailPriority == "High") ? System.Net.Mail.MailPriority.High : System.Net.Mail.MailPriority.Normal; ////内容编码、格式 //email.BodyEncoding = System.Text.Encoding.UTF8; //email.IsBodyHtml = true; //SMTP服务器 //System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(ps.EmailFwq); //client.EnableSsl = false; //client.UseDefaultCredentials = true; ////验证(Credentials 凭证) //client.Credentials = new System.Net.NetworkCredential(mailFrom, ps.EmailPass); ////处理待发的电子邮件的方法 (Delivery 发送,传输) //client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; System.Web.Mail.MailMessage mail = new System.Web.Mail.MailMessage(); try { mail.From = ps.EmailYx; mail.To = string.Join(",", mailTo); mail.Subject = mailSubject; mail.BodyFormat = System.Web.Mail.MailFormat.Html; mail.Body =mailBody; mail.Cc = string.Join(",", mailCC); mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", ps.EmailYx); mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", ps.EmailPass); mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport",ps.EmailDk); mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", "true"); System.Web.Mail.SmtpMail.SmtpServer = ps.EmailFwq; System.Web.Mail.SmtpMail.Send(mail); BLL.ErrLogInfo.WriteLog("开始发送邮件"); //发送邮件 //client.Send(email); BLL.ErrLogInfo.WriteLog("发送中..."); if (mailTo != null && mailTo.Length > 0) { foreach (string send in mailTo) { if (!String.IsNullOrEmpty(send)) { Email_SendLog newSendEmail = new Email_SendLog(); newSendEmail.EmailId = Guid.NewGuid().ToString(); newSendEmail.EmailTile = mailSubject; newSendEmail.EmailContent = mailBody; newSendEmail.EmailURL = send; newSendEmail.EmailName = send; newSendEmail.EmailStatus = "发送成功"; newSendEmail.CreateTime = DateTime.Now; newSendEmail.CreateName = "sys"; BLL.Email_Send.Email_SendLogService.AddEmail_SendLog(newSendEmail); } } } return true; } catch (Exception ex) { BLL.ErrLogInfo.WriteLog(ex, "发送邮件失败"); if (mailTo != null && mailTo.Length > 0) { List ss = new List(); foreach (string send in mailTo) { if (!String.IsNullOrEmpty(send)) { Email_SendLog newSendEmail = new Email_SendLog(); newSendEmail.EmailId = Guid.NewGuid().ToString(); newSendEmail.EmailTile = mailSubject; newSendEmail.EmailContent = mailBody; newSendEmail.EmailURL = send; newSendEmail.EmailName = send; newSendEmail.EmailStatus = "发送失败"; newSendEmail.CreateTime = DateTime.Now; newSendEmail.ErrorMsg = ex.Message; newSendEmail.CreateName = "sys"; BLL.Email_Send.Email_SendLogService.AddEmail_SendLog(newSendEmail); } } } resultMessage = ex.Message; return false; } finally { //及时释放占用的资源 } } public static Email_Pop getEmailPop() { var pp = Funs.DB.Email_Pop.FirstOrDefault(); return pp; } } }