private MailMessage MailMsgToMailMessage(MailMsg msg) { var mailMessage = new MailMessage(); mailMessage.From = new MailAddress(_settingsService.GetSettings <string>("SystemEmailAddress"), _settingsService.GetSettings <string>("SystemEmailSenderName")); var receivers = msg.Receiver.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); foreach (string receiver in receivers) { mailMessage.To.Add(new MailAddress(receiver)); } mailMessage.Subject = msg.Subject; mailMessage.IsBodyHtml = true; string body = _razorEngineService.RenderEmailMessage("TextMessage", msg.Body); mailMessage.Body = body; if (!String.IsNullOrWhiteSpace(msg.BccReceiver)) { mailMessage.Bcc.Add(new MailAddress(msg.BccReceiver)); } if (msg.AttachIds != null && msg.AttachIds.Any()) { AttachFiles(mailMessage, msg.AttachIds); } return(mailMessage); }
//static void s_ConfigurationChangeWatcher_Changed(object sender, FileSystemEventArgs e) //{ // Configure(e.FullPath); //} void IMailTransportSubmission.OnMessageSubmission( MailMsg mailmsg, IMailTransportNotify notify, IntPtr context) { LogDebug("Invoking mail sink message submission callback."); try { Message message = new Message(mailmsg); LogDebug(string.Format("Processing message \"{0}\" ({1} byte(s)).", message.Rfc822MsgSubject, message.GetContentSize())); byte[] content = message.ReadContent(0, message.GetContentSize()); string filename = s_QueuePath + "\\" + message.Rfc822MsgId; filename = filename.Replace("<", "_").Replace(">", "_").Replace(" ", "_"); LogDebug(string.Format("Dumping message \"{0}\" to {1}.", message.Rfc822MsgSubject, filename)); File.WriteAllBytes(filename, content); } catch (Exception ex) { LogError(ex.Message + "\n" + ex.StackTrace.ToString()); } finally { if (null != mailmsg) { Marshal.ReleaseComObject(mailmsg); } } }
private static void sendMailThread(object obj) { MailMsg mailMsg = (MailMsg)obj; try { int num = MailAPI.GetInstance().SendEmail(mailMsg); if (num != ErrorCode.SUCCESS) { int num2 = 0; LogInfo.InsertNewLog(ref num2, "0120062", new string[] { mailMsg.Receiver, mailMsg.Subject.Replace("\r\n", "") }); } } catch (Exception) { } finally { if (LogAPI._mailerCounter > 0) { Interlocked.Decrement(ref LogAPI._mailerCounter); } } }
void IMailTransportSubmission.OnMessageSubmission( MailMsg message, IMailTransportNotify notify, IntPtr context) { try { Message Msg = new Message(message); if (Debug) { EventLog.WriteEntry( Assembly.GetExecutingAssembly().FullName, "Checking message " + Msg.Rfc822MsgId + " with subject \"" + Msg.Rfc822MsgSubject + "\".", EventLogEntryType.Information); } RecipsAdd NewRecipients = Msg.AllocNewList(); bool fReRouted = false; foreach (Recip Recipient in Msg.Recips) { try { fReRouted |= ReRoute(Recipient, Msg, NewRecipients); } catch (Exception ex) { EventLog.WriteEntry( Assembly.GetExecutingAssembly().FullName, "Error routing message " + Msg.Rfc822MsgId + " to " + Recipient.SMTPAddress + "." + ex.Message, EventLogEntryType.Error); } } if (fReRouted) { Msg.WriteList(NewRecipients); } } catch (Exception ex) { EventLog.WriteEntry( Assembly.GetExecutingAssembly().FullName, ex.Message + "\n" + ex.StackTrace.ToString(), EventLogEntryType.Error); } finally { if (null != message) Marshal.ReleaseComObject(message); } }
public void Send(MailMsg msg) { var mail = Mapper.Map <RoCMS.Data.Models.Mail>(msg); var message = MailMsgToMimeMessage(msg); mail.MailId = _mailGateway.Insert(mail); MailSendResult sendResult = SendViaMailKit(message); mail.Sent = sendResult.Success; mail.ErrorMessage = sendResult.ErrorMsg; _mailGateway.Update(mail); }
public object applyOn(SpotterFRPC spotter) { var msg = new MailMsg(); foreach (var item in spotter.Items) { var methodCall = item as FRPCparser.FRPCMethodCall; if (methodCall == null || !methodCall.Name.Equals("user.message.send")) { continue; } foreach (var param in methodCall.Parameters) { var email = param as FRPCparser.FRPCStruct; if (email == null) { continue; } foreach (var it in email.Items) { if (it.Key.Equals("subject")) { var itSubj = it.Value as FRPCparser.FRPCString; msg.Subject = itSubj?.Value; } else if (it.Key.Equals("body")) { var itBody = it.Value as FRPCparser.FRPCString; msg.Body = itBody?.Value; } else if (it.Key.Equals("to")) { var recips = it.Value as FRPCparser.FRPCArray; if (recips != null) { msg.To = GetAddresses(recips); } } else if (it.Key.Equals("from")) { var senders = it.Value as FRPCparser.FRPCArray; if (senders != null) { msg.From = GetAddresses(senders); } } } } } return(msg); }
private void SendAutoReply(string email, string name, string message) { string template = _settingsService.GetSettings <string>("MailTmplOrderAutoReply"); string body = string.Format(template, name, message); MailMsg reply = new MailMsg { Subject = "Ваша заявка принята", Receiver = email, Body = body }; _mailService.Send(reply); }
private void SendReviewNotification(string author, string authorEmail, string text) { string template = _settingsService.GetSettings <string>("MailTmplReviewCreated"); string body = string.Format(template, author, authorEmail, text); MailMsg reply = new MailMsg { Subject = "Кто-то оставил отзыв на сайте", Receiver = _settingsService.GetSettings <string>(nameof(Setting.OrderEmailAddress)), Body = body }; _mailService.Send(reply); }
private void SendOrderToInternalEmail(Order order, Client client) { string htmlString = _razorService.RenderEmailMessage("ShopOrderAdmin", new ShopOrderEmail { Order = order, Client = client }); var msg = new MailMsg() { Receiver = _settingsService.GetSettings <string>("OrderEmailAddress"), Body = htmlString, Subject = "Заказ в интернет-магазине: " + DateTime.UtcNow.ApplySiteTimezone() }; _mailService.Send(msg); }
private void SendOrderToClientEmail(Order order, Client client) { string htmlString = _razorService.RenderEmailMessage("ShopOrderClient", new ShopOrderEmail { Order = order, Client = client }); var msg = new MailMsg() { Receiver = client.Email, Body = htmlString, Subject = "Заказ в интернет-магазине: " + DateTime.UtcNow.ApplySiteTimezone() }; _mailService.Send(msg); }
public void SendAnswerToAuthor(int questionId) { var dataRec = _questionGateway.SelectOne(questionId); if (string.IsNullOrEmpty(dataRec.AuthorEmail)) { throw new ArgumentException("Empty email", nameof(dataRec.AuthorEmail)); } var msg = new MailMsg(); msg.Subject = "Ответ на вопрос"; msg.Receiver = dataRec.AuthorEmail; msg.Body = _razorEngineService.RenderEmailMessage("FAQAnswerMessage", Mapper.Map <Question>(dataRec)); _mailService.Send(msg); dataRec.AnswerSentToAuthor = true; _questionGateway.Update(dataRec); }
public void UpdatePaymentState(int formRequestId, PaymentState?state, bool notify = false) { var req = _formRequestGateway.SelectOne(formRequestId); req.PaymentState = Mapper.Map <Data.Models.PaymentState>(state); _formRequestGateway.Update(req); if (notify) { string body = $"Поступила оплата за заказ<br>Guid: {req.Guid}<br>Сумма: {req.Amount}"; MailMsg res = new MailMsg { Subject = $"Заказ оплачен: {req.Guid} {DateTime.UtcNow.ApplySiteTimezone()}", Receiver = _settingsService.GetSettings <string>("OrderEmailAddress"), Body = body }; _mailService.Send(res); } }
public object applyOn(SpotterJson spotter) { var root = spotter.GetRoot(); var mail = new MailMsg(); if (root.XPathSelectElement("/result/message") != null) { // there should be only one message in response to display message foreach (var msg in root.XPathSelectElements("/result/message/item")) { mail.Subject = msg.XPathSelectElement("header/subject").Value; mail.From = msg.XPathSelectElement("header/from/email").Value; mail.To = YahooGetListedMessages.GetAllInArray(msg, "header/to//email", "; "); mail.Cc = YahooGetListedMessages.GetAllInArray(msg, "header/cc//email", "; "); mail.Bcc = YahooGetListedMessages.GetAllInArray(msg, "header/bcc//email", "; "); mail.Body = YahooGetListedMessages.GetAllInArray(msg, "part//text", ""); mail.SourceFolder = msg.XPathSelectElement("sourceFolderInfo/name").Value; } } return(mail); }
public object applyOn(SpotterJson spotter) { var root = spotter.GetRoot(); var list = new List <MailMsg>(); if (root.XPathSelectElement("/result//messageInfo") != null) { foreach (var conversation in root.XPathSelectElements("/result//messageInfo")) { foreach (var msg in conversation.XPathSelectElements("item")) { var mail = new MailMsg(); mail.From = msg.XPathSelectElement("from/email").Value; mail.To = msg.XPathSelectElement("toEmail").Value; mail.Subject = msg.XPathSelectElement("subject").Value; mail.Body = msg.XPathSelectElement("snippet").Value; mail.SourceFolder = msg.XPathSelectElement("sourceFolderInfo/name").Value; list.Add(mail); } } } return(list); }
private WebmailEventBase CreateEvent(WebmailAnalyzerBase.EventSuggest evt, WebmailAnalyzerBase.WebmailSuggest webmailApp, SpotterBase spotter) { string from; string to; string cc; string bcc; string subject; string body; switch (evt) { case WebmailAnalyzerBase.EventSuggest.MailDisplayMessage: if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.Seznam) { var o = spotter.Accept(SpotterVisitorsManager.GetSpotterVisitor("Seznam/GetDisplayMessage")); var m = o as MailMsg; if (m != null) { return(new EventDisplayMessage(this.SnooperExport, m)); } } else if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.YahooMailNeo) { var o = spotter.Accept(SpotterVisitorsManager.GetSpotterVisitor("Yahoo/GetDisplayMessage")); var m = o as MailMsg; if (m != null) { return(new EventDisplayMessage(this.SnooperExport, m)); } } this.SpotterGetMailFields(spotter, out from, out to, out cc, out bcc, out subject, out body); return(new EventDisplayMessage(this.SnooperExport, from, to, cc, bcc, subject, body)); case WebmailAnalyzerBase.EventSuggest.MailListFolder: if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.YahooMailNeo) { var o = spotter.Accept(SpotterVisitorsManager.GetSpotterVisitor("Yahoo/GetListedMessages")); var l = o as List <MailMsg>; if (l != null) { return(new EventListFolder(this.SnooperExport, l)); } } else if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.Seznam) { var o = spotter.Accept(SpotterVisitorsManager.GetSpotterVisitor("Seznam/GetListedMessages")); var l = o as List <MailMsg>; if (l != null) { return(new EventListFolder(this.SnooperExport, l)); } } else if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.MicrosoftLive) { // TODO var content = spotter.GetStringContent(); var splitted = content.Split(','); var list = new List <MailMsg>(); for (int i = 0; i < splitted.Length; i++) { if (!splitted[i].Contains("new HM.Rollup")) { continue; } var mail = new MailMsg(); mail.From = splitted[i + 11]; mail.Subject = splitted[i + 27]; list.Add(mail); } return(new EventListFolder(this.SnooperExport, list)); } return(new EventListFolder(this.SnooperExport, spotter.GetStringContent())); default: if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.Seznam) { var o = spotter.Accept(SpotterVisitorsManager.GetSpotterVisitor("Seznam/GetNewMessage")); var m = o as MailMsg; if (m != null) { return(new EventNewMessage(this.SnooperExport, m)); } } else if (webmailApp == WebmailAnalyzerBase.WebmailSuggest.MicrosoftLive) { var pars = spotter.GetContentPart("^d$", "*"); var value = pars.Substring(1, pars.Length - 2); var parray = value.Split(','); to = parray.Length > 0 ? parray[0] : ""; from = parray.Length > 1 ? parray[1] : ""; cc = parray.Length > 2 ? parray[2] : ""; bcc = parray.Length > 3 ? parray[3] : ""; subject = parray.Length > 5 ? parray[5] : ""; body = parray.Length > 6 ? parray[6] : ""; return(new EventNewMessage(this.SnooperExport, from, to, cc, bcc, subject, body)); } this.SpotterGetMailFields(spotter, out from, out to, out cc, out bcc, out subject, out body); return(new EventNewMessage(this.SnooperExport, from, to, cc, bcc, subject, body)); } }
/// <summary> /// 邮件发送 杨大鑫 /// </summary> /// <param name="email">邮件对象</param> /// <returns></returns> public static bool sendEmail(MailMsg email) { String host = SysConstant.MAIL_SMTP_HOST_LM; //指定 smtp 服务器地址 int port = SysConstant.MAIL_SMTP_PORT_LM; //指定 smtp 服务器的端口,默认是25,如果采用默认端口,可省去 Int32 modelIndex = (Int32)myUtils.getCache(SysConstant.CACHE_MODEL_INDEX); //模式,0=朗玛信息,1=39健康网 if (modelIndex == 1) { host = SysConstant.MAIL_SMTP_HOST_39; port = SysConstant.MAIL_SMTP_PORT_39; } String senderID = email.senderID; //邮件发送人 邮箱账号 String senderPwd = email.senderPwd; //邮件发送人 邮箱密码 SmtpClient smtp = new SmtpClient(); //实例化一个SmtpClient smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //将smtp的出站方式设为 Network smtp.EnableSsl = false; //smtp服务器是否启用SSL加密 smtp.Host = host; //指定 smtp 服务器地址 smtp.Port = port; //指定 smtp 服务器的端口,默认是25,如果采用默认端口,可省去 smtp.Timeout = 30000; //如果需要认证,则用下面的方式 smtp.Credentials = new NetworkCredential(senderID, senderPwd); MailMessage mm = new MailMessage(); //实例化一个邮件类 mm.Priority = MailPriority.High; //邮件的优先级,分为 Low, Normal, High,通常用 Normal即可 //收件方看到的邮件来源; //第一个参数是发信人邮件地址 //第二参数是发信人显示的名称 //第三个参数是 第二个参数所使用的编码,如果指定不正确,则对方收到后显示乱码 mm.From = new MailAddress(senderID, email.senderName, Encoding.GetEncoding(936)); mm.To.Add(email.recipientEmail); //邮件的接收者,支持群发,多个地址之间用 半角逗号 分开 mm.Subject = email.emailTitle; //邮件标题 mm.SubjectEncoding = Encoding.GetEncoding(936); // 这里非常重要,如果你的邮件标题包含中文,这里一定要指定,否则对方收到的极有可能是乱码。 936是简体中文的pagecode,如果是英文标题,这句可以忽略不用 mm.IsBodyHtml = true; //邮件正文是否是HTML格式 mm.BodyEncoding = Encoding.GetEncoding(936); //邮件正文的编码, 设置不正确, 接收者会收到乱码 mm.Body = email.emailContent; //邮件正文 //添加附件 string mailCallPrefix = SysConstant.MAIL_CALL_PREFIX; Attachment att = null; List <Attachment> attList = new List <Attachment>(); foreach (string filePath in email.attachments) { if (File.Exists(filePath)) { att = new Attachment(filePath); att.Name = mailCallPrefix + " " + email.recipientName + SysConstant.FILE_EXCEL_SUFFIX; mm.Attachments.Add(att); attList.Add(att); att.ContentStream.Flush(); } } bool flag = true; try { smtp.Send(mm); //发送邮件,如果不返回异常, 则大功告成了。 } catch (Exception e) { //throw new Exception(e.Message); flag = false; } //释放流 foreach (Attachment atts in attList) { if (atts.ContentStream != null) { atts.ContentStream.Dispose(); } } //垃圾回收 GC.Collect(); return(flag); }
private MailMsg CreateMessage(Message message) { //Формирование письма { string subject = String.Empty; string templateName = String.Empty; string template = String.Empty; string body = String.Empty; var rootUrl = _settingsService.GetSettings <string>(nameof(Setting.RootUrl)) .Replace("http://", "").Replace("https://", ""); MailMsg res; if (message.OrderFormId.HasValue) { var form = _orderFormService.GetOrderForm(message.OrderFormId.Value); subject = String.IsNullOrEmpty(form.EmailSubject) ? $"Заявка с сайта {rootUrl}" : form.EmailSubject; if (form.DateInEmailSubject) { subject = $"{subject}: {DateTime.UtcNow.ApplySiteTimezone()}"; } body = String.IsNullOrWhiteSpace(form.EmailTemplate) ? message.Text : string.Format(form.EmailTemplate, message.Text); res = new MailMsg { Subject = subject, Receiver = String.IsNullOrEmpty(form.Email) ? _settingsService.GetSettings <string>("OrderEmailAddress") : form.Email, AttachIds = message.AttachIds, Body = body.Replace("\r\n", "<br/><br/>").Replace("\n", "<br/><br/>"), BccReceiver = form.BccEmail }; } else { switch (message.MessageType) { case MessageType.CallMeBack: subject = "Обратный звонок"; templateName = "MailTmplCallback"; template = _settingsService.GetSettings <string>(templateName); body = string.Format(template, message.Name, message.Phone, message.Text); break; case MessageType.Order: subject = $"Заявка с сайта {rootUrl}"; templateName = "MailTmplOrder"; template = _settingsService.GetSettings <string>(templateName); body = string.Format(template, message.Name, message.Email, message.Phone, message.Contact, message.Text); break; } res = new MailMsg { Subject = subject + ": " + DateTime.UtcNow.ApplySiteTimezone(), Receiver = _settingsService.GetSettings <string>("OrderEmailAddress"), AttachIds = message.AttachIds, Body = body }; } return(res); } }
public object applyOn(SpotterFRPC spotter) { var list = new List <MailMsg>(); foreach (var item in spotter.Items) { var methodResponse = item as FRPCparser.FRPCMethodRespone; if (methodResponse == null) { continue; } foreach (var data in methodResponse.Data) { var msgStruct = data as FRPCparser.FRPCStruct; if (msgStruct == null) { continue; } foreach (var msgItem in msgStruct.Items) { if (!msgItem.Key.Equals("messages")) { continue; } var msgArray = msgItem.Value as FRPCparser.FRPCArray; if (msgArray == null) { continue; } foreach (var msg in msgArray.Items) { var mailMsg = new MailMsg(); var email = msg as FRPCparser.FRPCStruct; if (email == null) { continue; } foreach (var it in email.Items) { if (it.Key.Equals("subject")) { var itSubj = it.Value as FRPCparser.FRPCString; mailMsg.Subject = itSubj?.Value; } else if (it.Key.Equals("abstract")) { var itBody = it.Value as FRPCparser.FRPCString; mailMsg.Body = itBody?.Value; } else if (it.Key.Equals("to")) { var recips = it.Value as FRPCparser.FRPCArray; if (recips != null) { mailMsg.To = SeznamGetNewMessage.GetAddresses(recips); } } else if (it.Key.Equals("from")) { var senders = it.Value as FRPCparser.FRPCArray; if (senders != null) { mailMsg.From = SeznamGetNewMessage.GetAddresses(senders); } } else if (it.Key.Equals("folder")) { var folder = it.Value as FRPCparser.FRPCInteger8; if (folder != null) { mailMsg.SourceFolder = folder.Value.ToString(); } } } list.Add(mailMsg); } } } } return(list); }
public void Send(MailMsg msg) { // запрещаем отправку сообщений }
private static void MailThreadScheduler(object obj) { MailMsg mailMsg = null; while (true) { int num = WaitHandle.WaitAny(LogAPI._waitEmailHandles, 100); if (num == 258) { lock (LogAPI._lockEmail) { TimeSpan timeSpan = DateTime.Now - LogAPI._lastEmailMerge; if (timeSpan.TotalSeconds < 0.0) { LogAPI._lastEmailMerge = DateTime.Now; timeSpan = DateTime.Now - LogAPI._lastEmailMerge; } if (timeSpan.TotalSeconds <= 5.0) { continue; } if (LogAPI._mergedMail == null) { continue; } mailMsg = LogAPI._mergedMail; LogAPI._mergedMail = null; } } if (num == 0) { break; } try { if (LogAPI._mailerCounter < 10) { lock (LogAPI._lockEmail) { if (mailMsg == null) { if (LogAPI._emailQueue.Count > 0) { if (LogAPI._emailQueue.TryDequeue(out mailMsg)) { } } else { LogAPI._emailEvent.Reset(); } } } if (mailMsg != null) { Interlocked.Increment(ref LogAPI._mailerCounter); mailMsg.Body = new StringBuilder("Dear User, ").AppendLine("<br /><br />").Append(mailMsg._mergedBody).ToString(); ThreadCreator.StartThread(new ParameterizedThreadStart(LogAPI.sendMailThread), mailMsg, true); mailMsg = null; } } } catch (Exception) { } } }
private static int emailNewLog(string logKey, params string[] logPrar) { SMTPSetting sMTPSetting = new SMTPSetting(); string[] array = sMTPSetting.Receiver.Split(new string[] { "\r\n", ";", ",", " " }, StringSplitOptions.RemoveEmptyEntries); List <string> list = new List <string>(); string[] array2 = array; for (int i = 0; i < array2.Length; i++) { string item = array2[i]; list.Add(item); } if (sMTPSetting.Status <= 0 || list.Count <= 0) { return(0); } string str = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); string msg = EventLogLang.getMsg("L" + logKey, logPrar); string msg2 = EventLogLang.getMsg("SL" + logKey, logPrar); string value = str + "<br/>" + msg; MailMsg mailMsg = new MailMsg(sMTPSetting.ServerIP, sMTPSetting.Port, sMTPSetting.Sender, list, sMTPSetting.AuthenticationFlag, sMTPSetting.AccountName, sMTPSetting.AccountPwd); mailMsg.Subject = "eco Sensors Event Notification - " + msg2; mailMsg.Body = new StringBuilder().AppendLine(value).ToString(); mailMsg.Receiver = sMTPSetting.Receiver; if (logKey.Equals("0230002") || logKey.Equals("0110100") || logKey.Equals("0110090") || logKey.Equals("0130001")) { LogAPI.sendMailThread(mailMsg); return(ErrorCode.SUCCESS); } lock (LogAPI._lockEmail) { if (LogAPI._mergedMail != null) { if (mailMsg.Subject.Equals(LogAPI._mergedMail.Subject, StringComparison.InvariantCultureIgnoreCase) && mailMsg.Receiver.Equals(LogAPI._mergedMail.Receiver, StringComparison.InvariantCultureIgnoreCase)) { LogAPI._mergedMail._ItemsInBody++; LogAPI._mergedMail._mergedBody.Append("<br /><br />"); LogAPI._mergedMail._mergedBody.Append(mailMsg.Body); LogAPI._lastEmailMerge = DateTime.Now; } else { LogAPI._emailQueue.Enqueue(LogAPI._mergedMail); LogAPI._emailEvent.Set(); LogAPI._mergedMail = null; } } if (LogAPI._mergedMail == null) { LogAPI._mergedMail = mailMsg; LogAPI._mergedMail._SerialNo = LogAPI._NextEmailSerialNo++; LogAPI._mergedMail._ItemsInBody++; LogAPI._mergedMail._mergedBody.Append(mailMsg.Body); LogAPI._lastEmailMerge = DateTime.Now; } } if (LogAPI._threadEmail == null) { LogAPI._waitEmailHandles[0] = LogAPI._stopMailEvent; LogAPI._waitEmailHandles[1] = LogAPI._emailEvent; LogAPI._threadEmail = new Thread(new ParameterizedThreadStart(LogAPI.MailThreadScheduler)); LogAPI._threadEmail.Name = "Email Scheduler Thread"; LogAPI._threadEmail.CurrentCulture = CultureInfo.InvariantCulture; LogAPI._threadEmail.IsBackground = true; LogAPI._threadEmail.Start(); } return(ErrorCode.SUCCESS); }
/// <summary> /// 开始发送邮件 /// </summary> private void EmailSender(Object o) { //把发送邮件线程状态 保存在缓存中,方便在用户退出系统前给出提示 myUtils.addOrUpdateCache(SysConstant.CACHE_EMAIL_SEBD_STATE, true); //获取配置信息 if (myUtils.existsCache(SysConstant.CACHE_CONFIG)) { this.config = (Config)myUtils.getCache(SysConstant.CACHE_CONFIG); } else { this.config = myUtils.XMLReaderByConfig(this.configFilePath); } //要发送的邮件 List <Email> emailList = (List <Email>)myUtils.getCache(SysConstant.CACHE_EMAILS); foreach (Email mail in emailList) { MailMsg sm = new MailMsg(); sm.senderID = this.config.SenderEmail; sm.senderPwd = this.config.EmailPwd; sm.senderName = this.config.SenderEmail; if (string.IsNullOrWhiteSpace(this.emailTitle)) { sm.emailTitle = mail.emailTitle; } else { sm.emailTitle = this.emailTitle; } mail.emailTitle = sm.emailTitle; //添加附件 sm.attachments = new List <string>(); //读取附件 string fileFolder = sendFilePath + mail.recipientEmail + "/"; DirectoryInfo folder = new DirectoryInfo(fileFolder); foreach (FileInfo NextFile in folder.GetFiles()) { string fileFullName = NextFile.FullName; //只获取excel文件 string fileName = fileFullName.Substring(fileFullName.LastIndexOf("\\") + 1); string fileNameExt = fileName.Substring(fileName.LastIndexOf(".") + 1); string filter = "xls,xlsx"; if (filter.Contains(fileNameExt)) { sm.attachments.Add(fileFullName); } } string mailCallPrefix = SysConstant.MAIL_CALL_PREFIX; sm.emailContent = "<span>" + mailCallPrefix + " " + mail.recipientName + ":<br/> </span>" + this.emailContent; sm.recipientEmail = mail.recipientEmail; sm.recipientName = mail.recipientName; mail.emailContent = this.emailContent; bool b = myUtils.sendEmail(sm); if (b) { mail.state = "已发送"; mail.date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");; this.successEmails.Add(mail); } else { mail.state = "发送失败"; mail.date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");; this.failedEmails.Add(mail); } //把传来的参数转换为委托 CallBackDelegate cbd = o as CallBackDelegate; //执行回调. cbd(emailList.Count, this.successEmails.Count, this.failedEmails.Count); } }