public EmailJobData SendEmail(EnumSettingSource settingsSource, string settingsKey, string subject, string body, IEnumerable <MailAddress> toAddressList, MailAddress fromAddress, params EmailAttachmentData[] attachments) { var jobData = new EmailJobData { SettingsSource = settingsSource, SettingsKey = settingsKey, Subject = subject, Body = body, FromAddress = new DataServiceMailAddress(fromAddress), ToAddressList = DataServiceMailAddress.GetList(toAddressList), Attachments = (attachments != null) ? attachments.ToList() : null, Status = EnumJobStatus.New, QueuedDateTimeUtc = DateTime.UtcNow, FailureCount = 0 }; return(_documentSession.StoreSaveEvict(jobData)); }
public void ProcessItem(EmailJobData jobItem) { var emailConnectionSettings = _connectionSettingsManager.Load <EmailConnectionSettings>(jobItem.SettingsSource, jobItem.SettingsKey); var emailServerSettings = new EmailServerSettings { Host = emailConnectionSettings.Host, Port = emailConnectionSettings.Port, UserName = emailConnectionSettings.UserName, Password = emailConnectionSettings.Password }; string overrideEmailAddress = ConfigurationManager.AppSettings["OverrideAllEmailAddress"]; var toAddressList = DataServiceMailAddress.ToMailAddressList(jobItem.ToAddressList); if (!string.IsNullOrWhiteSpace(overrideEmailAddress)) { toAddressList = new List <MailAddress>() { new MailAddress(overrideEmailAddress) }; } string subject = FilterSubject(jobItem.Subject); try { EmailAttachmentData[] attachments = null; if (jobItem.Attachments != null) { attachments = jobItem.Attachments.ToArray(); } _emailSender.SendEmail(emailServerSettings, subject, jobItem.Body, toAddressList, jobItem.FromAddress.ToMailAddress(), attachments); } catch (RazorEngine.Templating.TemplateCompilationException ex) { var sb = new StringBuilder(); sb.AppendLine("Error(s) compiling template for email: "); foreach (var item in ex.Errors) { sb.AppendLine("-" + item.Line.ToString() + ": " + item.ErrorText); } throw new Exception(sb.ToString(), ex); } }