Basf_EProject/EProject/FineUIPro.Web/common/MailHelper.cs

236 lines
8.7 KiB
C#
Raw Normal View History

2024-05-08 11:01:54 +08:00
using Model;
using System;
using System.Collections.Generic;
using System.Net.Mail;
namespace FineUIPro.Web.common
{
public class MailHelper
{
#region web.config中取得发送邮件参数
////SMTP服务器
//public static string MailSmtpServer
//{
// get { return System.Configuration.ConfigurationManager.AppSettings["mailSmtpServer"]; }
//}
////系统发件地址
//public static string MailServerFrom
//{
// get
// {
// if (getEmailPop(ID))
// {
// }
// else
// {
// return System.Configuration.ConfigurationManager.AppSettings["MailServerFrom"];
// }
// }
//}
////系统发件密码
//public static string MailServerpassword
//{
// get { return System.Configuration.ConfigurationManager.AppSettings["MailServerpassword"]; }
//}
//系统发件人名称
//public static string MailServeruserName
//{
// get { return System.Configuration.ConfigurationManager.AppSettings["MailServeruserName"]; }
//}
#endregion
/// <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 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.UseDefaultCredentials = true;
//验证Credentials 凭证)
client.Credentials = new System.Net.NetworkCredential(mailFrom, ps.EmailPass);
//处理待发的电子邮件的方法 (Delivery 发送,传输)
client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
try
{
//发送邮件
client.Send(email);
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)
{
if (mailTo != null && mailTo.Length > 0)
{
List<Email_SendLog> ss = new List<Email_SendLog>();
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);
}
}
}
resultMessage = ex.Message;
return false;
}
finally
{
//及时释放占用的资源
email.Attachments.Clear();
email.Attachments.Dispose();
}
}
public static bool getDateNow()
{
bool f = false;
string dataTime = DateTime.Now.ToString("dd");
Sys_Set pops = new Sys_Set();
pops = BLL.Sys_SetService.GetSetById(3);
if (pops != null)
{
if (pops.SetValue.Equals(dataTime))
{
f = true;
}
}
return f;
}
public static Email_Pop getEmailPop(string EmailID)
{
Email_Pop pp = new Email_Pop();
pp = BLL.Email_Send.Email_PopService.GetEmail_Pop(EmailID);
return pp;
}
}
}