/*--------------------------------------------------------------------- * Copyright (C) 2024 TECHSCAN 版权所有。 * www.techscan.cn *┌──────────────────────────────────┐ *│ 此技术信息为本公司机密信息,未经本公司书面同意禁止向第三方披露. │ *│ 版权所有:上海太迅自动识别技术有限公司               │ *└──────────────────────────────────┘ * * 文件名: EmailSend.cs * 功能描述: N/A * 作者: 26950 * CLR版本: 4.0.30319.42000 * 创建时间: 2024/5/24 12:47:40 * Client: MAYONGLONG * 文件版本: V1.0.0 ===============================版本履历=============================== * Ver 变更日期 负责人 变更内容 * V1.0.0 2024/5/24 12:47:40 Myl Create * ====================================================================== //--------------------------------------------------------------------*/ using log4net; using MimeKit; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TsSFCDeivceClient.Email { public class EmailSend { #region Fields & Property private ILog m_log; #endregion #region Ctor public EmailSend() { m_log = log4net.LogManager.GetLogger((System.Reflection.MethodBase.GetCurrentMethod().DeclaringType)); } #endregion #region Methods public async void SendEmail(string cTitle, string cMessage, string cEmailAddressTo, string cEMailAddressCC, IList lstAttachments, bool bRework = false) { try { m_log.Info($"开始发送外协{(bRework ? "返工" : "")}发货清单邮件."); MailKitHelp vEMail = new MailKitHelp(); // mail.medtronic.com vEMail.SmtpAddress = EmailSendParams.DefaultParams.SmtpAddress; // false vEMail.IsSSL = EmailSendParams.DefaultParams.IsSSL; // 25 vEMail.SmtpPort = EmailSendParams.DefaultParams.SmtpPort; //是否启用无密码模式 if (EmailSendParams.DefaultParams.EmailNoPass) { vEMail.IsUseDefaultCredentials = true; } else { vEMail.PassWord = EmailSendParams.DefaultParams.Password; } // rs.czopssfc@medtronic.com vEMail.FromMailAddress = EmailSendParams.DefaultParams.FromMailAddress; //收件人 vEMail.ToMailAddress = cEmailAddressTo.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); //抄送 if (!string.IsNullOrEmpty(cEMailAddressCC)) { vEMail.IsCC = true; vEMail.CarbonCopy = cEMailAddressCC.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); } vEMail.IsBodyHtml = true; #region 发送邮件 var rs = await Task.Run(() => { #region 添加附件 if (lstAttachments != null && lstAttachments.Any()) { // 清除历史邮件 if (vEMail.Attachments != null) vEMail.Attachments.Clear(); vEMail.IsSendAttachments = true; foreach (string item in lstAttachments) { MimePart attachment = new MimePart() { //读取文件,只能用绝对路径 Content = new MimeContent(File.OpenRead(item), ContentEncoding.Default), ContentDisposition = new ContentDisposition(ContentDisposition.Attachment), ContentTransferEncoding = ContentEncoding.Base64, //文件名字 //FileName = Path.GetFileNameWithoutExtension(item), FileName = Path.GetFileName(item), }; if (vEMail.Attachments == null) { vEMail.Attachments = new List(); } vEMail.Attachments.Add(attachment); } } #endregion vEMail.Body = vEMail.GetHtmlInfoString(cMessage); if (!string.IsNullOrEmpty(cTitle)) { vEMail.Title = $"外协{(bRework ? "返工" : "")}订单(供应商:{cTitle})发货通知"; } else { vEMail.Title = $"外协{(bRework ? "返工" : "")}订单发货通知"; } string result = ""; var vSendStatus = vEMail.Send(out result); if (vSendStatus != MailKitHelp.SendStatus.Success) { m_log.Error($"外协{(bRework ? "返工" : "")}订单发货通知邮件发送失败:{result}"); } else { if (result.StartsWith("邮件发送成功")) { m_log.Info($"外协{(bRework ? "返工" : "")}订单发货通知邮件发送成功."); } } return result; }); #endregion } catch (Exception ex) { m_log.Error($"外协{(bRework ? "返工" : "")}订单发货通知邮件发送时异常:{ex.Message}", ex); } } #endregion } }