带附件发送邮件

/// <summary>
/// 带附件发送邮件
/// </summary>
/// <param name="EmailModel"></param>
/// <param name="result"></param>
/// <returns></returns>
///
public bool Send(EmailModel EmailModel, ref string result, MyEmail myEmail)
{
MailMessage _EmailModel = new MailMessage();
MyEmail myEmail_AttAddress = ReadXmlNode();
try
{
#region 邮件内
_EmailModel.Subject = EmailModel.Title;//邮件主题
_EmailModel.From = new MailAddress(myEmail.ClientAddress);//发件人
_EmailModel.IsBodyHtml = true;//设置邮件为html结构
foreach (var toAddress in myEmail.ToAddress)
{
_EmailModel.To.Add(toAddress);//获取收件人地址
}
foreach (var ccAddress in myEmail.CCAddress)
{
_EmailModel.CC.Add(ccAddress);//抄送人地址
}
if (myEmail_AttAddress.AttachmentAddress!="")
{
//精简后的多发附件方法
foreach (var item in myEmail_AttAddress.AttachmentAddress.Split(new Char[] { ';' }))
{
_EmailModel.Attachments.Add(new Attachment("" + item + ""));//添加附件
}
}
_EmailModel.Body = new MailMethod().BodyContent(EmailModel);//获取表单以及说明(正文)
SmtpClient client = new SmtpClient();//eDetultCredenta简单邮维传输协议(SMTP)来发送电子邮件。
client.Host = myEmail_AttAddress.ServerSmptAdderss;//服务器
client.UseDefaultCredentials = true; //获取或设置bool值,该值控制(redentialC ache.DefaultC redentials是否随请求一起发送。
client.Credentials = new NetworkCredential(myEmail.ClientAddress, myEmail.ClientPassword);//用指定的用户名和密码初始化NetworkC redential类的新实例。

if (EmailModel.DataTableContent != null && EmailModel.DataTableContent.Rows.Count > 0)
{
cCreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
client.Send(_EmailModel);//发送邮件

if (Variable.EvenList != null && Variable.EvenList.Count > 0)//如果存在旧数据(上一次发送的数据)
{
Variable.oldList= Variable.EvenList;
for (int i = 0; i < Variable.oldList.LongCount(); i++)
{
Variable.oldList.ForEach(w => w.SendTime = cCreateTime);
}
}
}
#endregion
return true;
}
catch (Exception ex)
{
result = ex.Message;
return false;
}
}

posted @ 2020-08-12 16:25  ナナチ  阅读(49)  评论(0编辑  收藏  举报