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));
        }
Beispiel #2
0
        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);
            }
        }