2024-05-08 10:17:02 +08:00
|
|
|
|
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
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 私有构造方法,不允许创建实例
|
|
|
|
|
/// </summary>
|
|
|
|
|
private MailHelper()
|
|
|
|
|
{
|
|
|
|
|
// TODO: Add constructor logic here
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// SendNetMail(须配置SMTP服务器地址)(多个收件人、抄送人、附件其参数用";"隔开,最后一个不能有";")
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="mailFrom">发件人</param>
|
|
|
|
|
/// <param name="mailTo">收件人(多个收件人用";"隔开,最后一个不能有";")</param>
|
|
|
|
|
/// <param name="mailSubject">主题</param>
|
|
|
|
|
/// <param name="mailBody">内容</param>
|
|
|
|
|
/// <param name="mailAttch">附件(多个附件用";"隔开,最后一个不能有";")</param>
|
|
|
|
|
/// <param name="mailCode">密码(对加密过的)</param>
|
|
|
|
|
/// <param name="mailPriority">优先级</param>
|
|
|
|
|
/// <param name="mailCC">抄送(多个抄送人用";"隔开,最后一个不能有";")</param>
|
|
|
|
|
/// <param name="resultMessage">输出信息</param>
|
|
|
|
|
public static bool SendNetMail1(EmailPop ps, string mailFrom, string[] mailTo, string mailSubject, string mailBody, string mailAttch, string mailCode, string mailPriority, string[] mailCC, List<EmailUser> emailUser, out string resultMessage)
|
|
|
|
|
{
|
|
|
|
|
var englishmonth = DateTime.Now.ToString("MMMM", CultureInfo.CreateSpecificCulture("en-GB"));
|
|
|
|
|
bool result = true;
|
|
|
|
|
//初始化输出参数
|
|
|
|
|
resultMessage = string.Empty;
|
|
|
|
|
List<Model.SendEmail> sendList = new List<Model.SendEmail>();
|
|
|
|
|
//发件人和收件人不为空
|
|
|
|
|
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);
|
|
|
|
|
//主题
|
2024-09-18 10:36:26 +08:00
|
|
|
|
email.Subject = mailSubject.Replace("\r","").Replace("\n", "");
|
2024-05-08 10:17:02 +08:00
|
|
|
|
//附件
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// SendNetMail(须配置SMTP服务器地址)(多个收件人、抄送人、附件其参数用";"隔开,最后一个不能有";")
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="mailFrom">发件人</param>
|
|
|
|
|
/// <param name="mailTo">收件人(多个收件人用";"隔开,最后一个不能有";")</param>
|
|
|
|
|
/// <param name="mailSubject">主题</param>
|
|
|
|
|
/// <param name="mailBody">内容</param>
|
|
|
|
|
/// <param name="mailAttch">附件(多个附件用";"隔开,最后一个不能有";")</param>
|
|
|
|
|
/// <param name="mailCode">密码(对加密过的)</param>
|
|
|
|
|
/// <param name="mailPriority">优先级</param>
|
|
|
|
|
/// <param name="mailCC">抄送(多个抄送人用";"隔开,最后一个不能有";")</param>
|
|
|
|
|
/// <param name="sendNum">发送次数</param>
|
|
|
|
|
/// <param name="resultMessage">输出信息</param>
|
|
|
|
|
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<Model.SendEmail> sendList = new List<Model.SendEmail>();
|
|
|
|
|
//发件人和收件人不为空
|
|
|
|
|
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);
|
|
|
|
|
//主题
|
2024-09-18 10:36:26 +08:00
|
|
|
|
email.Subject = mailSubject.Replace("\r", "").Replace("\n", "");
|
2024-05-08 10:17:02 +08:00
|
|
|
|
//附件
|
|
|
|
|
|
|
|
|
|
//优先级
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// SendNetMail(须配置SMTP服务器地址)(多个收件人、抄送人、附件其参数用";"隔开,最后一个不能有";")
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="ps">配置SMTP的服务器</param>
|
|
|
|
|
/// <param name="myPram">参数</param>
|
|
|
|
|
/// <param name="title"></param>
|
|
|
|
|
/// <param name="mailTo">收件人(多个收件人用";"隔开,最后一个不能有";")</param>
|
|
|
|
|
/// <param name="mailCC">抄送(多个抄送人用";"隔开,最后一个不能有";")</param>
|
|
|
|
|
/// <param name="resultMessage"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
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<Model.SendEmail> sendList = new List<Model.SendEmail>();
|
|
|
|
|
//发件人和收件人不为空
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// SendNetMail(须配置SMTP服务器地址)(多个收件人、抄送人、附件其参数用";"隔开,最后一个不能有";")
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="mailFrom">发件人</param>
|
|
|
|
|
/// <param name="mailTo">收件人(多个收件人用";"隔开,最后一个不能有";")</param>
|
|
|
|
|
/// <param name="mailSubject">主题</param>
|
|
|
|
|
/// <param name="mailBody">内容</param>
|
|
|
|
|
/// <param name="mailAttch">附件(多个附件用";"隔开,最后一个不能有";")</param>
|
|
|
|
|
/// <param name="mailCode">密码(对加密过的)</param>
|
|
|
|
|
/// <param name="mailPriority">优先级</param>
|
|
|
|
|
/// <param name="mailCC">抄送(多个抄送人用";"隔开,最后一个不能有";")</param>
|
|
|
|
|
/// <param name="resultMessage">输出信息</param>
|
|
|
|
|
public static bool SendPunishMail(EmailPop ps, string mailFrom, string[] mailTo, string mailSubject, string mailBody, string mailAttch, string mailCode, string mailPriority, string[] mailCC,List<View_EMC_Punishment> pList, out string resultMessage)
|
|
|
|
|
{
|
|
|
|
|
bool result = true;
|
|
|
|
|
//初始化输出参数
|
|
|
|
|
resultMessage = string.Empty;
|
|
|
|
|
List<Model.SendEmail> sendList = new List<Model.SendEmail>();
|
|
|
|
|
//发件人和收件人不为空
|
|
|
|
|
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 = "<table border=1><tr><td> Date</td><td>Time</td><td>Contract No.</td><td>Contractor</td><td>Discipline</td><td>Location</td><td>Violation Description</td><td>Company(RMB)</td><td>Individual(RMB)</td><td>Backcharge(RMB)</td><td>Violation Degree</td><td>Contract Admin</td><td>Main Coordinator</td><td>M.C.Dept</td><td>User Representative</td><td>BYC RU</td><td>Violation Inspector</td><td>Inspection Department</td><td>Backcharge SES No.</td><td>Backcharge Completion Date</td> </tr> ";
|
|
|
|
|
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 + "<tr><td>"+ p.PunishDate.Value.ToString("yyyy/MM/dd") + "</td><td>" + p.PunishTime + "</td><td>" + p.FO_NO + "</td><td>" + p.Contractor + "</td><td>" + p.Discipline + "</td><td>" + p.Location + "</td><td>" + p.Description + "</td><td>" + company + "</td><td>" + individual + "</td><td>" + p.Backcharge.Value.ToString("0.00") + "</td><td>" + p.ViolationDegree + "</td><td>" + p.Contract_Admin + "</td><td>" + p.Main_Coordinator + "</td><td>" + p.MCDept + "</td><td>" + p.User_Representative + "</td><td>" + p.BYCRU + "</td><td>" + p.Violation_Inspector_Name + "</td><td>" + p.InspectionDep + "</td><td>" + p.SES_No + "</td><td>" + p.CompletionDate + "</td></tr>";
|
|
|
|
|
//punishList = punishList + "<p> 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 + "</p>";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
punishList = punishList + "</table>";
|
|
|
|
|
}
|
|
|
|
|
//主题
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// SendNetMail(须配置SMTP服务器地址)(多个收件人、抄送人、附件其参数用";"隔开,最后一个不能有";")
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="mailFrom">发件人</param>
|
|
|
|
|
/// <param name="mailTo">收件人(多个收件人用";"隔开,最后一个不能有";")</param>
|
|
|
|
|
/// <param name="mailSubject">主题</param>
|
|
|
|
|
/// <param name="mailBody">内容</param>
|
|
|
|
|
/// <param name="mailAttch">附件(多个附件用";"隔开,最后一个不能有";")</param>
|
|
|
|
|
/// <param name="mailCode">密码(对加密过的)</param>
|
|
|
|
|
/// <param name="mailPriority">优先级</param>
|
|
|
|
|
/// <param name="mailCC">抄送(多个抄送人用";"隔开,最后一个不能有";")</param>
|
|
|
|
|
/// <param name="resultMessage">输出信息</param>
|
|
|
|
|
public static bool SendNetMail(EmailPop ps, string mailFrom, string[] mailTo, string mailSubject, string mailBody, string mailAttch, string mailCode, string mailPriority, string[] mailCC, List<EmailUser> emailUser, out string resultMessage)
|
|
|
|
|
{
|
|
|
|
|
var englishmonth = DateTime.Now.ToString("MMMM", CultureInfo.CreateSpecificCulture("en-GB"));
|
|
|
|
|
bool result = true;
|
|
|
|
|
//初始化输出参数
|
|
|
|
|
resultMessage = string.Empty;
|
|
|
|
|
List<Model.SendEmail> sendList = new List<Model.SendEmail>();
|
|
|
|
|
//发件人和收件人不为空
|
|
|
|
|
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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 去除html
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static string ReplaceHtmlTag(string html)
|
|
|
|
|
{
|
|
|
|
|
string strText = System.Text.RegularExpressions.Regex.Replace(html, "<[^>]+>", "");
|
|
|
|
|
strText = System.Text.RegularExpressions.Regex.Replace(strText, "&[^;]+;", "");
|
|
|
|
|
|
|
|
|
|
return strText;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 根据主键获取信息
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="EmailID"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static EmailPop getEmailPop(string EmailID)
|
|
|
|
|
{
|
|
|
|
|
return Funs.DB.EmailPop.FirstOrDefault(x => x.EmailID == EmailID);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|