private void ButtonSendTestMail_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(ViewModel.TestMailAddress)) { System.Windows.MessageBox.Show("先输入测试地址!"); } else { try { SheetConfigModel mainSheetConfig = SheetConfigModels[MainConfigModel.MainSheetName]; MailDataModel mailDataModel = new MailDataModel { From = MailConfigModel.MailAddress, Password = MailConfigModel.MailPassword, SMTPAddress = MailConfigModel.SMTPAddress, IsbodyHtml = true, To = ViewModel.TestMailAddress, Subject = FormatString(CalcParamValues(SubjectParams, mainSheetConfig.StartingLine), MailConfigModel.MailSubject), Body = FormatString(CalcParamValues(BodyParams, mainSheetConfig.StartingLine), File.ReadAllText(MainConfigModel.TemplatePath)), Port = MailConfigModel.Port, EnableSsl = MailConfigModel.EnableSsl, Priority = MailConfigModel.Priority, Attachments = CalcParamValues(Attachments, mainSheetConfig.StartingLine), }; MailSenderUtil.Send(mailDataModel); System.Windows.MessageBox.Show("发送成功!"); } catch (Exception ex) { System.Windows.MessageBox.Show(ex.Message); } } }
public static void Send(MailDataModel mailData) { MailMessage mailMessage = BuildMessage(mailData); var smtpClient = GetSmtpClient(mailData); smtpClient.Send(mailMessage); }
private static SmtpClient GetSmtpClient(MailDataModel mailData) { SmtpClient smtpClient; if (SmtpClientDict.ContainsKey(mailData.From)) { smtpClient = SmtpClientDict[mailData.From]; } else { smtpClient = new SmtpClient { Credentials = new NetworkCredential(mailData.From, mailData.Password), Host = mailData.SMTPAddress, EnableSsl = mailData.EnableSsl, Port = mailData.Port }; SmtpClientDict[mailData.From] = smtpClient; } return(smtpClient); }
private static MailMessage BuildMessage(MailDataModel mailData) { MailAddress mailAddress = new MailAddress(mailData.From); MailMessage mailMessage = new MailMessage(); mailMessage.To.Add(mailData.To); mailMessage.From = mailAddress; mailMessage.Subject = mailData.Subject; mailMessage.SubjectEncoding = Encoding.UTF8; mailMessage.Body = mailData.Body; mailMessage.BodyEncoding = Encoding.UTF8; mailMessage.Priority = (MailPriority)mailData.Priority; mailMessage.IsBodyHtml = true; foreach (var attachment in mailData.Attachments) { if (!string.IsNullOrEmpty(attachment)) { mailMessage.Attachments.Add(new Attachment(attachment)); } } return(mailMessage); }
/// <summary> /// 构建邮件 /// </summary> /// <returns></returns> private void BuildAndSendMails() { if (Workbook != null) { try { //主sheet配置 SheetConfigModel mainSheetConfig = SheetConfigModels[MainConfigModel.MainSheetName]; //模板字符串 string bodyHtmlString = File.ReadAllText(MainConfigModel.TemplatePath); //失败个数 int faildCount = 0; //邮件总数 int mailCount = mainSheetConfig.EndLine - mainSheetConfig.StartingLine + 1; //成功的标识 object[,] successSimple = ReadRangeValues(MainConfigModel.MainSheetName + "." + MainConfigModel.SuccessSimpleLocation); //回写的标识地址 IList <string> mailDataSuccessLocation = new List <string>(); for (int i = mainSheetConfig.StartingLine; i <= mainSheetConfig.EndLine; i++) { PushMessage("正在处理(" + (i - mainSheetConfig.StartingLine + 1) + "/" + mailCount + ")\n"); try { if (!(MainConfigModel.SuccessSimple == (successSimple[i - mainSheetConfig.StartingLine + 1, 1] == null ? string.Empty : successSimple[i - mainSheetConfig.StartingLine + 1, 1].ToString()))) { MailDataModel mailDataModel = new MailDataModel { From = MailConfigModel.MailAddress, Password = MailConfigModel.MailPassword, SMTPAddress = MailConfigModel.SMTPAddress, IsbodyHtml = true, To = FormatString(CalcParamValues(MailToParams, i), MailConfigModel.MailTo), Subject = FormatString(CalcParamValues(SubjectParams, i), MailConfigModel.MailSubject), Body = FormatString(CalcParamValues(BodyParams, i), bodyHtmlString), Port = MailConfigModel.Port, EnableSsl = MailConfigModel.EnableSsl, Priority = MailConfigModel.Priority, Attachments = CalcParamValues(Attachments, i), }; MailSenderUtil.Send(mailDataModel); mailDataSuccessLocation.Add(MainConfigModel.SuccessSimpleLocation + i); } } catch (Exception ex) { PushMessage(ex.Message + "\n"); faildCount++; continue; } } //回写成功标志 foreach (var range in GetMergeRanges(LoadWorksheet(Workbook, MainConfigModel.MainSheetName), mailDataSuccessLocation)) { range.Value2 = MainConfigModel.SuccessSimple; } PushMessage("处理完毕。" + "\n"); PushMessage("总数量" + (mailCount) + "\n"); PushMessage("失败数量" + (faildCount) + "\n"); } catch (Exception ex) { PushMessage("出现错误:" + ex.Message + "\n"); } } }
public void CleanUp() { DataModel = new MailDataModel(); }