using Model; using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Globalization; using System.Linq; using System.Net.Mail; using System.IO; using System.Text; namespace BLL.Common { public class MailHelper { /// /// 私有构造方法,不允许创建实例 /// private MailHelper() { // TODO: Add constructor logic here } /// /// SendNetMail(须配置SMTP服务器地址)(多个收件人、抄送人、附件其参数用";"隔开,最后一个不能有";") /// /// 发件人 /// 收件人(多个收件人用";"隔开,最后一个不能有";") /// 主题 /// 内容 /// 附件(多个附件用";"隔开,最后一个不能有";") /// 密码(对加密过的) /// 优先级 /// 抄送(多个抄送人用";"隔开,最后一个不能有";") /// 输出信息 public static bool SendNetMail1(EmailPop ps, string mailFrom, string[] mailTo, string mailSubject, string mailBody, string mailAttch, string mailCode, string mailPriority, string[] mailCC, List emailUser, out string resultMessage) { var englishmonth = DateTime.Now.ToString("MMMM", CultureInfo.CreateSpecificCulture("en-GB")); bool result = true; //初始化输出参数 resultMessage = string.Empty; List sendList = new List(); //发件人和收件人不为空 if (string.IsNullOrEmpty(ps.EmailYx) || mailTo == null) { resultMessage = "Please Fill Email Addresser Or Addressee!"; return false; } if (mailTo == null || mailTo.Length == 0) { resultMessage = "The recipient is empty!"; return false; } if (!string.IsNullOrEmpty(ps.EmailYx)) mailFrom = ps.EmailYx; MailMessage email = new MailMessage(); //发件人地址 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.To.Add(cc); email.CC.Add(cc); } } } //email.To.Add(send); //主题 email.Subject = mailSubject.Replace("\r","").Replace("\n", ""); //附件 if (!string.IsNullOrEmpty(mailAttch)) { string[] attachments = mailAttch.Split(';'); foreach (string file in attachments) { Attachment attach = new 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 = Encoding.UTF8; email.IsBodyHtml = true; //SMTP服务器 SmtpClient client = new SmtpClient(ps.EmailFwq); client.UseDefaultCredentials = true; //验证(Credentials 凭证) client.Credentials = new System.Net.NetworkCredential(mailFrom, ps.EmailPass); //处理待发的电子邮件的方法 (Delivery 发送,传输) client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; if (!string.IsNullOrEmpty(mailCode)) { string[] parm = mailCode.Split('|'); //内容 email.Body = mailBody.Replace("{FO No}", parm[0]).Replace("{Discipline}", parm[1]).Replace("{Contractor}", parm[2]).Replace("{Buyer}", parm[3]).Replace("{Contract Administrator}", parm[4]).Replace("{Main Coordinator}", parm[5]).Replace("{User Representative}", parm[6]).Replace("{Expire Date}", parm[7]); } else { email.Body = mailBody; } //循环发送邮件 try { //发送邮件 client.Send(email); if (mailTo != null && mailTo.Length > 0) { foreach (string send in mailTo) { if (!String.IsNullOrEmpty(send)) { Model.SendEmail newSendEmail = new Model.SendEmail(); newSendEmail.EmailId = Guid.NewGuid().ToString(); newSendEmail.EmailTile = mailSubject; if (string.IsNullOrEmpty(mailCode)) { newSendEmail.EmailContent = ReplaceHtmlTag(mailBody); } else { string[] parm = mailCode.Split('|'); newSendEmail.EmailContent = ReplaceHtmlTag(mailBody).Replace("{FO No}", parm[0]).Replace("{Discipline}", parm[1]).Replace("{Contractor}", parm[2]).Replace("{Buyer}", parm[3]).Replace("{Contract Administrator}", parm[4]).Replace("{Main Coordinator}", parm[5]).Replace("{User Representative}", parm[6]).Replace("{Expire Date}", parm[7]); } newSendEmail.EmailURL = send; newSendEmail.EmailName = send; newSendEmail.EmailStatus = "发送成功"; newSendEmail.CreateTime = DateTime.Now; newSendEmail.CreateName = "sys"; sendList.Add(newSendEmail); } } SqlBulkHelper.BulkInsert(SqlBulkHelper.GetCon(), "SendEmail", sendList); result= true; } } catch (Exception ex) { if (mailTo != null && mailTo.Length > 0) { foreach (string send in mailTo) { if (!String.IsNullOrEmpty(send)) { Model.SendEmail newSendEmail = new Model.SendEmail(); newSendEmail.EmailId = Guid.NewGuid().ToString(); newSendEmail.EmailTile = mailSubject; if (string.IsNullOrEmpty(mailCode)) { newSendEmail.EmailContent = ReplaceHtmlTag(mailBody); } else { string[] parm = mailCode.Split('|'); newSendEmail.EmailContent = ReplaceHtmlTag(mailBody).Replace("{FO No}", parm[0]).Replace("{Discipline}", parm[1]).Replace("{Contractor}", parm[2]).Replace("{Buyer}", parm[3]).Replace("{Contract Administrator}", parm[4]).Replace("{Main Coordinator}", parm[5]).Replace("{User Representative}", parm[6]).Replace("{Expire Date}", parm[7]); } newSendEmail.EmailURL = send; newSendEmail.EmailName = send; newSendEmail.EmailStatus = "发送失败"; newSendEmail.CreateTime = DateTime.Now; newSendEmail.CreateName = "sys"; sendList.Add(newSendEmail); resultMessage = ex.Message; } } SqlBulkHelper.BulkInsert(SqlBulkHelper.GetCon(), "SendEmail", sendList); result= false; } } finally { if (email.Attachments.Count > 0) { //及时释放占用的资源 email.Attachments.Clear(); email.Attachments.Dispose(); } } return result; } /// /// SendNetMail(须配置SMTP服务器地址)(多个收件人、抄送人、附件其参数用";"隔开,最后一个不能有";") /// /// 发件人 /// 收件人(多个收件人用";"隔开,最后一个不能有";") /// 主题 /// 内容 /// 附件(多个附件用";"隔开,最后一个不能有";") /// 密码(对加密过的) /// 优先级 /// 抄送(多个抄送人用";"隔开,最后一个不能有";") /// 发送次数 /// 输出信息 public static bool SendNetMail2(EmailPop ps, string mailFrom, string[] mailTo, string mailSubject, string mailBody, string mailPriority, string[] mailCC, string sendNum, out string resultMessage) { var englishmonth = DateTime.Now.ToString("MMMM", CultureInfo.CreateSpecificCulture("en-GB")); bool result = true; //初始化输出参数 resultMessage = string.Empty; List sendList = new List(); //发件人和收件人不为空 if (string.IsNullOrEmpty(ps.EmailYx) || mailTo == null) { resultMessage = "Please Fill Email Addresser Or Addressee!"; return false; } if (mailTo == null || mailTo.Length == 0) { resultMessage = "The recipient is empty!"; return false; } if (!string.IsNullOrEmpty(ps.EmailYx)) mailFrom = ps.EmailYx; MailMessage email = new MailMessage(); //发件人地址 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.To.Add(cc); email.CC.Add(cc); } } } //email.To.Add(send); //主题 email.Subject = mailSubject.Replace("\r", "").Replace("\n", ""); //附件 //优先级 email.Priority = (mailPriority == "High") ? System.Net.Mail.MailPriority.High : System.Net.Mail.MailPriority.Normal; //内容编码、格式 email.BodyEncoding = Encoding.UTF8; email.IsBodyHtml = true; //SMTP服务器 SmtpClient client = new SmtpClient(ps.EmailFwq); client.UseDefaultCredentials = true; //验证(Credentials 凭证) client.Credentials = new System.Net.NetworkCredential(mailFrom, ps.EmailPass); //处理待发的电子邮件的方法 (Delivery 发送,传输) client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; email.Body = mailBody; //循环发送邮件 try { //发送邮件 client.Send(email); if (mailTo != null && mailTo.Length > 0) { foreach (string send in mailTo) { if (!String.IsNullOrEmpty(send)) { Model.SendEmail newSendEmail = new Model.SendEmail(); newSendEmail.EmailId = Guid.NewGuid().ToString(); newSendEmail.EmailTile = mailSubject + sendNum; newSendEmail.EmailContent = ReplaceHtmlTag(mailBody) + sendNum; newSendEmail.EmailURL = send; newSendEmail.EmailName = send; newSendEmail.EmailStatus = "发送成功"; newSendEmail.CreateTime = DateTime.Now; newSendEmail.CreateName = "sys"; sendList.Add(newSendEmail); } } SqlBulkHelper.BulkInsert(SqlBulkHelper.GetCon(), "SendEmail", sendList); result = true; } } catch (Exception ex) { if (mailTo != null && mailTo.Length > 0) { foreach (string send in mailTo) { if (!String.IsNullOrEmpty(send)) { Model.SendEmail newSendEmail = new Model.SendEmail(); newSendEmail.EmailId = Guid.NewGuid().ToString(); newSendEmail.EmailTile = mailSubject + sendNum; newSendEmail.EmailContent = ReplaceHtmlTag(mailBody); newSendEmail.EmailURL = send; newSendEmail.EmailName = send; newSendEmail.EmailStatus = "发送失败"; newSendEmail.CreateTime = DateTime.Now; newSendEmail.CreateName = "sys"; sendList.Add(newSendEmail); resultMessage = ex.Message; } } SqlBulkHelper.BulkInsert(SqlBulkHelper.GetCon(), "SendEmail", sendList); result = false; } } finally { if (email.Attachments.Count > 0) { //及时释放占用的资源 email.Attachments.Clear(); email.Attachments.Dispose(); } } return result; } /// /// SendNetMail(须配置SMTP服务器地址)(多个收件人、抄送人、附件其参数用";"隔开,最后一个不能有";") /// /// 配置SMTP的服务器 /// 参数 /// /// 收件人(多个收件人用";"隔开,最后一个不能有";") /// 抄送(多个抄送人用";"隔开,最后一个不能有";") /// /// public static bool SendPunishSesMail(EmailPop ps, NameValueCollection myPram, string title, string[] mailTo, string[] mailCC, out string resultMessage) { var emailTemplate = Funs.DB.SendEmailTemplate.Where(x => x.EmailName.Contains(title)); bool result = true; //初始化输出参数 resultMessage = string.Empty; List sendList = new List(); //发件人和收件人不为空 if (string.IsNullOrEmpty(ps.EmailYx) || mailTo == null) { resultMessage = "Please Fill Email Addresser Or Addressee!"; return false; } if (mailTo == null || mailTo.Length == 0) { resultMessage = "The recipient is empty!"; return false; } string mailFrom = string.Empty; if (!string.IsNullOrEmpty(ps.EmailYx)) mailFrom = ps.EmailYx; MailMessage email = new MailMessage(); //发件人地址 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); } } } //email.To.Add("408299694@qq.com"); //加抄送 if (mailCC != null && mailCC.Length > 0) { foreach (string cc in mailCC) { if (!String.IsNullOrEmpty(cc)) { //email.To.Add(cc); email.CC.Add(cc); } } } //优先级 email.Priority = System.Net.Mail.MailPriority.Normal; //内容编码、格式 email.BodyEncoding = Encoding.UTF8; email.IsBodyHtml = true; //SMTP服务器 SmtpClient client = new SmtpClient(ps.EmailFwq); client.UseDefaultCredentials = true; //验证(Credentials 凭证) client.Credentials = new System.Net.NetworkCredential(mailFrom, ps.EmailPass); //处理待发的电子邮件的方法 (Delivery 发送,传输) client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; //string[] parm = mailCode.Split('|'); //内容 string emailContext = emailTemplate.Select(x => x.EmailContext).FirstOrDefault(); email.Body = FineUIPro.Web.common.TemplateHelper.BulidByFile2(emailContext, myPram); //主题 string mailSubject= emailTemplate.Select(x => x.EmailName).FirstOrDefault(); email.Subject = FineUIPro.Web.common.TemplateHelper.BulidByFile2(mailSubject, myPram); //循环发送邮件 try { //发送邮件 client.Send(email); if (mailTo != null && mailTo.Length > 0) { foreach (string send in mailTo) { if (!String.IsNullOrEmpty(send)) { Model.SendEmail newSendEmail = new Model.SendEmail(); newSendEmail.EmailId = Guid.NewGuid().ToString(); newSendEmail.EmailTile = email.Subject; newSendEmail.EmailContent = email.Body; newSendEmail.EmailURL = send; newSendEmail.EmailName = send; newSendEmail.EmailStatus = "发送成功"; newSendEmail.CreateTime = DateTime.Now; newSendEmail.CreateName = "sys"; sendList.Add(newSendEmail); } } SqlBulkHelper.BulkInsert(SqlBulkHelper.GetCon(), "SendEmail", sendList); result = true; } } catch (Exception ex) { if (mailTo != null && mailTo.Length > 0) { foreach (string send in mailTo) { if (!String.IsNullOrEmpty(send)) { Model.SendEmail newSendEmail = new Model.SendEmail(); newSendEmail.EmailId = Guid.NewGuid().ToString(); newSendEmail.EmailTile = email.Subject; newSendEmail.EmailContent = email.Body; newSendEmail.EmailURL = send; newSendEmail.EmailName = send; newSendEmail.EmailStatus = "发送失败"; newSendEmail.CreateTime = DateTime.Now; newSendEmail.CreateName = "sys"; sendList.Add(newSendEmail); resultMessage = ex.Message; } } SqlBulkHelper.BulkInsert(SqlBulkHelper.GetCon(), "SendEmail", sendList); result = false; } } finally { if (email.Attachments.Count > 0) { //及时释放占用的资源 email.Attachments.Clear(); email.Attachments.Dispose(); } } return result; } /// /// SendNetMail(须配置SMTP服务器地址)(多个收件人、抄送人、附件其参数用";"隔开,最后一个不能有";") /// /// 发件人 /// 收件人(多个收件人用";"隔开,最后一个不能有";") /// 主题 /// 内容 /// 附件(多个附件用";"隔开,最后一个不能有";") /// 密码(对加密过的) /// 优先级 /// 抄送(多个抄送人用";"隔开,最后一个不能有";") /// 输出信息 public static bool SendPunishMail(EmailPop ps, string mailFrom, string[] mailTo, string mailSubject, string mailBody, string mailAttch, string mailCode, string mailPriority, string[] mailCC,List pList, out string resultMessage) { bool result = true; //初始化输出参数 resultMessage = string.Empty; List sendList = new List(); //发件人和收件人不为空 if (string.IsNullOrEmpty(ps.EmailYx) || mailTo == null) { resultMessage = "Please Fill Email Addresser Or Addressee!"; return false; } if (mailTo == null || mailTo.Length == 0) { resultMessage = "The recipient is empty!"; return false; } if (!string.IsNullOrEmpty(ps.EmailYx)) mailFrom = ps.EmailYx; MailMessage email = new MailMessage(); //发件人地址 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); } } } //email.To.Add("408299694@qq.com"); //加抄送 if (mailCC != null && mailCC.Length > 0) { foreach (string cc in mailCC) { if (!String.IsNullOrEmpty(cc)) { //email.To.Add(cc); email.CC.Add(cc); } } } //附件 if (!string.IsNullOrEmpty(mailAttch)) { string[] attachments = mailAttch.Split(';'); foreach (string file in attachments) { Attachment attach = new Attachment(file, System.Net.Mime.MediaTypeNames.Application.Octet); //Attachment attach = new Attachment(Directory.GetCurrentDirectory ); //email.Attachments.Add(newAttachment("Hydrangeas.jpg")); //为附件添加发送时间 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 = Encoding.UTF8; email.IsBodyHtml = true; //SMTP服务器 SmtpClient client = new SmtpClient(ps.EmailFwq); client.UseDefaultCredentials = true; //验证(Credentials 凭证) client.Credentials = new System.Net.NetworkCredential(mailFrom, ps.EmailPass); //处理待发的电子邮件的方法 (Delivery 发送,传输) client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; //string[] parm = mailCode.Split('|'); string enDate = string.Empty; string pDate = string.Empty; string chDate = string.Empty; string punishList = string.Empty; if (mailBody != string.Empty) { DateTime date = Convert.ToDateTime(mailCode); enDate = date.ToString("MMMM.yyyy", System.Globalization.CultureInfo.CreateSpecificCulture("en-GB")); pDate = date.ToString("yyyy-MM"); chDate = string.Format("{0:Y}", date); punishList = " "; foreach (var p in pList) { string company = p.Company.HasValue ? p.Company.Value.ToString("0.00") : ""; string individual= p.Individual.HasValue ? p.Individual.Value.ToString("0.00") : ""; punishList = punishList + ""; //punishList = punishList + "

Date:" + p.PunishDate + ";Time:" + p.PunishTime + ";Contract No.:" + p.FO_NO + ";Contractor:" + p.Contractor + ";Discipline:" + p.Discipline + ";Location:" + p.Location + ";Violation Description:" + p.Description + ";Company(RMB):" + p.Company.ToString("0.00") + ";Individual(RMB):" + p.Individual.ToString("0.00") + ";Backcharge(RMB):" + p.Backcharge.Value.ToString("0.00") + ";Violation Degree:" + p.ViolationDegree + ";Contract Admin:" + p.Contract_Admin + ";Main Coordinator:" + p.Main_Coordinator + ";M.C.Dept:" + p.MCDept + ";User Representative:" + p.User_Representative + ";BYC RU:" + p.BYCRU + ";Violation Inspector:" + p.Violation_Inspector_Name + ";Inspection Department:" + p.InspectionDep + ";Backcharge SES No.:" + p.SES_No + ";Backcharge Completion Date:" + p.CompletionDate + "

"; } punishList = punishList + "
DateTimeContract No.ContractorDisciplineLocationViolation DescriptionCompany(RMB)Individual(RMB)Backcharge(RMB)Violation DegreeContract AdminMain CoordinatorM.C.DeptUser RepresentativeBYC RUViolation InspectorInspection DepartmentBackcharge SES No.Backcharge Completion Date
"+ p.PunishDate.Value.ToString("yyyy/MM/dd") + "" + p.PunishTime + "" + p.FO_NO + "" + p.Contractor + "" + p.Discipline + "" + p.Location + "" + p.Description + "" + company + "" + individual + "" + p.Backcharge.Value.ToString("0.00") + "" + p.ViolationDegree + "" + p.Contract_Admin + "" + p.Main_Coordinator + "" + p.MCDept + "" + p.User_Representative + "" + p.BYCRU + "" + p.Violation_Inspector_Name + "" + p.InspectionDep + "" + p.SES_No + "" + p.CompletionDate + "
"; } //主题 email.Subject = mailSubject.Replace("{PDate}", pDate); //内容 email.Body = mailBody.Replace("{EnDate}", enDate).Replace("{ChDate}", chDate).Replace("{PunishList}", punishList); //循环发送邮件 try { //发送邮件 client.Send(email); if (mailTo != null && mailTo.Length > 0) { foreach (string send in mailTo) { if (!String.IsNullOrEmpty(send)) { Model.SendEmail newSendEmail = new Model.SendEmail(); newSendEmail.EmailId = Guid.NewGuid().ToString(); newSendEmail.EmailTile = mailSubject.Replace("{PDate}", pDate); newSendEmail.EmailContent = ReplaceHtmlTag(mailBody).Replace("{EnDate}", enDate).Replace("{ChDate}", chDate).Replace("{PunishList}", punishList); newSendEmail.EmailURL = send; newSendEmail.EmailName = send; newSendEmail.EmailStatus = "发送成功"; newSendEmail.CreateTime = DateTime.Now; newSendEmail.CreateName = "sys"; sendList.Add(newSendEmail); } } SqlBulkHelper.BulkInsert(SqlBulkHelper.GetCon(), "SendEmail", sendList); result = true; } } catch (Exception ex) { if (mailTo != null && mailTo.Length > 0) { foreach (string send in mailTo) { if (!String.IsNullOrEmpty(send)) { Model.SendEmail newSendEmail = new Model.SendEmail(); newSendEmail.EmailId = Guid.NewGuid().ToString(); newSendEmail.EmailTile = mailSubject.Replace("{PDate}", pDate); newSendEmail.EmailContent = ReplaceHtmlTag(mailBody).Replace("{EnDate}", enDate).Replace("{ChDate}", chDate).Replace("{PunishList}", punishList); newSendEmail.EmailURL = send; newSendEmail.EmailName = send; newSendEmail.EmailStatus = "发送失败"; newSendEmail.CreateTime = DateTime.Now; newSendEmail.CreateName = "sys"; sendList.Add(newSendEmail); resultMessage = ex.Message; } } SqlBulkHelper.BulkInsert(SqlBulkHelper.GetCon(), "SendEmail", sendList); result = false; } } finally { if (email.Attachments.Count > 0) { //及时释放占用的资源 email.Attachments.Clear(); email.Attachments.Dispose(); } } return result; } /// /// SendNetMail(须配置SMTP服务器地址)(多个收件人、抄送人、附件其参数用";"隔开,最后一个不能有";") /// /// 发件人 /// 收件人(多个收件人用";"隔开,最后一个不能有";") /// 主题 /// 内容 /// 附件(多个附件用";"隔开,最后一个不能有";") /// 密码(对加密过的) /// 优先级 /// 抄送(多个抄送人用";"隔开,最后一个不能有";") /// 输出信息 public static bool SendNetMail(EmailPop ps, string mailFrom, string[] mailTo, string mailSubject, string mailBody, string mailAttch, string mailCode, string mailPriority, string[] mailCC, List emailUser, out string resultMessage) { var englishmonth = DateTime.Now.ToString("MMMM", CultureInfo.CreateSpecificCulture("en-GB")); bool result = true; //初始化输出参数 resultMessage = string.Empty; List sendList = new List(); //发件人和收件人不为空 if (string.IsNullOrEmpty(ps.EmailYx) || mailTo == null) { resultMessage = "Please Fill Email Addresser Or Addressee!"; return false; } if (mailTo == null || mailTo.Length == 0) { resultMessage = "The recipient is empty!"; return false; } if (!string.IsNullOrEmpty(ps.EmailYx)) mailFrom = ps.EmailYx; MailMessage email; //SMTP服务器 SmtpClient client = new SmtpClient(ps.EmailFwq); client.UseDefaultCredentials = true; //验证(Credentials 凭证) client.Credentials = new System.Net.NetworkCredential(mailFrom, ps.EmailPass); //处理待发的电子邮件的方法 (Delivery 发送,传输) client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; //循环发送邮件 foreach (var send in mailTo) { email = new MailMessage(); //加抄送 if (mailCC != null && mailCC.Length > 0) { // 经理邮箱 string leaderMail = string.Empty; // 总监邮箱 string directorMail = string.Empty; var user = from x in Funs.DB.Sys_User where x.Email == send select x; var depart = (from x in Funs.DB.Base_Depart where x.DepartId == user.FirstOrDefault().DepartId select x).ToList(); if (depart.Count() > 0 && depart.FirstOrDefault().DepartLeader != null && depart.FirstOrDefault().DepartLeader != "") { var leader = from x in Funs.DB.Sys_User where x.UserId == depart.FirstOrDefault().DepartLeader select x; leaderMail = leader.FirstOrDefault().Email; } var departCode = depart.Select(p => p.DepartCode.Substring(0, 3)).Distinct().ToArray(); var director = from x in Funs.DB.Sys_User join y in Funs.DB.Base_Depart on x.DepartId equals y.DepartId where x.RoleId == Const.Role_DirectorId && departCode.Contains(y.DepartCode) select x; if (director.Count() > 0 && director.FirstOrDefault().Email != null && director.FirstOrDefault().Email != "") { directorMail = director.FirstOrDefault().Email; } foreach (string cc in mailCC) { if (!string.IsNullOrEmpty(cc) && (cc == leaderMail || cc == directorMail)) { email.CC.Add(cc); } } } //发件人地址 email.From = new MailAddress(mailFrom, ps.EmailYx); //主题 email.Subject = mailSubject; //附件 if (!string.IsNullOrEmpty(mailAttch)) { string[] attachments = mailAttch.Split(';'); foreach (string file in attachments) { Attachment attach = new 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 = Encoding.UTF8; email.IsBodyHtml = true; email.To.Add(send); string enUserName = string.Empty; string ch_User_Dep = string.Empty; string en_User_Dep = string.Empty; //string safetyEva = string.Empty; //获取用户 var userName = emailUser.Count(p => p.Email == send) > 0 ? emailUser.FirstOrDefault(p => p.Email == send).UserName : send; if (!string.IsNullOrEmpty(userName)) { var emailUserSend = Funs.DB.EmailUserView.Where(p => p.EmailType != 2 && p.IsEvaluateType != 1 && p.UserName== userName); var emailLeaderSend = Funs.DB.EmailUserLeaderView.Where(p => p.EmailType != 2 && p.IsEvaluateType != 1 && p.UserName == userName); var user = BLL.Sys_UserService.GetUserByAccount(userName); enUserName = user.UserName; //string enUser = string.Empty; //string chUser = string.Empty; //string depName = string.Empty; //if (emailUserSend!=null && emailUserSend.Count()>0) //{ // enUser = "User"; // chUser = "用户"; //} //if (emailLeaderSend != null && emailLeaderSend.Count() > 0) //{ // var dep = BLL.DepartService.GetDepartById(user.DepartId); // if (dep != null) // { // depName = dep.DepartName; // } //} if (emailUserSend != null && emailUserSend.Count() > 0 && emailLeaderSend != null && emailLeaderSend.Count() > 0) { en_User_Dep = "User/Dep" ; ch_User_Dep = "用户/部门"; } else if ((emailUserSend != null && emailUserSend.Count() > 0) && (emailLeaderSend == null || emailLeaderSend.Count() == 0)) { en_User_Dep = "User"; ch_User_Dep = "用户"; } else if ((emailUserSend == null || emailUserSend.Count() == 0) && (emailLeaderSend != null && emailLeaderSend.Count() > 0)) { en_User_Dep = "Dep"; ch_User_Dep = "部门"; } //内容 email.Body = mailBody.Replace("{month}", DateTime.Now.Month.ToString()).Replace("{name}", enUserName).Replace("{englishmonth}", englishmonth).Replace("{En_User_Dep}", en_User_Dep).Replace("{Ch_User_Dep}", ch_User_Dep); } try { //发送邮件 client.Send(email); Model.SendEmail newSendEmail = new Model.SendEmail(); newSendEmail.EmailId = Guid.NewGuid().ToString(); newSendEmail.EmailTile = mailSubject; newSendEmail.EmailContent = ReplaceHtmlTag(mailBody).Replace("{month}", DateTime.Now.Month.ToString()).Replace("{name}", enUserName).Replace("{englishmonth}", englishmonth); newSendEmail.EmailURL = send; newSendEmail.EmailName = send; newSendEmail.EmailStatus = "发送成功"; newSendEmail.CreateTime = DateTime.Now; newSendEmail.CreateName = "sys"; sendList.Add(newSendEmail); result = true; } catch (Exception ex) { //错误日志 Model.SendEmail newSendEmail = new Model.SendEmail(); newSendEmail.EmailId = Guid.NewGuid().ToString(); newSendEmail.EmailTile = mailSubject; newSendEmail.EmailContent = ReplaceHtmlTag(mailBody).Replace("{month}", DateTime.Now.Month.ToString()).Replace("{name}", enUserName).Replace("{englishmonth}", englishmonth); newSendEmail.EmailURL = send; newSendEmail.EmailName = send; newSendEmail.EmailStatus = "发送失败"; newSendEmail.CreateTime = DateTime.Now; newSendEmail.CreateName = "sys"; sendList.Add(newSendEmail); resultMessage = ex.Message; result = false; } finally { //及时释放占用的资源 if (email.Attachments.Count > 0) { email.Attachments.Clear(); email.Attachments.Dispose(); } } } SqlBulkHelper.BulkInsert(SqlBulkHelper.GetCon(), "SendEmail", sendList); return result; } /// /// 去除html /// /// public static string ReplaceHtmlTag(string html) { string strText = System.Text.RegularExpressions.Regex.Replace(html, "<[^>]+>", ""); strText = System.Text.RegularExpressions.Regex.Replace(strText, "&[^;]+;", ""); return strText; } /// /// 根据主键获取信息 /// /// /// public static EmailPop getEmailPop(string EmailID) { return Funs.DB.EmailPop.FirstOrDefault(x => x.EmailID == EmailID); } } }