public void SendQueuedMessages(ISettingsManager settingsManager, ISmtpWrapper smtpWrapper, IQueuedEmailMessageRepository queuedEmailRepository, IErrorLog errorLog) { if (!Monitor.TryEnter(_syncRoot)) { return; } try { var messageGroup = new List<QueuedEmailMessage>(); for (var i = 1; i <= settingsManager.Current.MailerQuantity; i++) { var queuedMessage = queuedEmailRepository.GetOldestQueuedEmailMessage(); if (queuedMessage == null) break; messageGroup.Add(queuedMessage); queuedEmailRepository.DeleteMessage(queuedMessage.MessageID); } Parallel.ForEach(messageGroup, message => { try { smtpWrapper.Send(message); } catch (Exception exc) { if (message == null) errorLog.Log(exc, ErrorSeverity.Email, "There was no message for the MailWorker to send."); else errorLog.Log(exc, ErrorSeverity.Email, String.Format("MessageID: {0}, To: <{1}> {2}, Subject: {3}", message.MessageID, message.ToEmail, message.ToName, message.Subject)); } }); } catch (Exception exc) { errorLog.Log(exc, ErrorSeverity.Error); } finally { Monitor.Exit(_syncRoot); } }
public ForgotPasswordMailer(ISettingsManager settingsManager, IQueuedEmailMessageRepository queuedEmailRepo) { _settingsManager = settingsManager; _queuedQueuedEmailRepo = queuedEmailRepo; }
public MailingListComposer(ISettingsManager settingsManager, IQueuedEmailMessageRepository queuedEmailRepo) { _settingsManager = settingsManager; _queuedQueuedEmailRepo = queuedEmailRepo; }
public void SendQueuedMessages(ISettingsManager settingsManager, ISmtpWrapper smtpWrapper, IQueuedEmailMessageRepository queuedEmailRepository, IEmailQueueRepository emailQueueRepository, IErrorLog errorLog) { if (!Monitor.TryEnter(SyncRoot)) { return; } try { var messageGroup = new List <QueuedEmailMessage>(); for (var i = 1; i <= settingsManager.Current.MailerQuantity; i++) { var payload = emailQueueRepository.Dequeue().Result; if (payload == null) { break; } if (payload.EmailQueuePayloadType == EmailQueuePayloadType.DeleteMassMessage) { throw new NotImplementedException($"EmailQueuePayloadType {payload.EmailQueuePayloadType} not implemented."); } var queuedMessage = queuedEmailRepository.GetMessage(payload.MessageID).Result; if (payload.EmailQueuePayloadType == EmailQueuePayloadType.MassMessage) { queuedMessage.ToEmail = payload.ToEmail; queuedMessage.ToName = payload.ToName; } if (queuedMessage == null) { break; } messageGroup.Add(queuedMessage); if (payload.EmailQueuePayloadType == EmailQueuePayloadType.FullMessage) { queuedEmailRepository.DeleteMessage(queuedMessage.MessageID); } } Parallel.ForEach(messageGroup, message => { try { smtpWrapper.Send(message); } catch (Exception exc) { if (message == null) { errorLog.Log(exc, ErrorSeverity.Email, "There was no message for the MailWorker to send."); } else { errorLog.Log(exc, ErrorSeverity.Email, $"MessageID: {message.MessageID}, To: <{message.ToEmail}> {message.ToName}, Subject: {message.Subject}"); } } }); } catch (Exception exc) { errorLog.Log(exc, ErrorSeverity.Error); } finally { Monitor.Exit(SyncRoot); } }
public QueuedEmailService(IQueuedEmailMessageRepository queuedEmailMessageRepository, IEmailQueueRepository emailQueueRepository, ITenantService tenantService) { _queuedEmailMessageRepository = queuedEmailMessageRepository; _emailQueueRepository = emailQueueRepository; _tenantService = tenantService; }
public UserEmailer(IProfileService profileService, ISettingsManager settingsManager, IQueuedEmailMessageRepository queuedEmailRepo) { _profileService = profileService; _settingsManager = settingsManager; _queuedQueuedEmailRepo = queuedEmailRepo; }
public SubscribedTopicEmailComposer(ISettingsManager settingsManager, IQueuedEmailMessageRepository queuedEmailRepo) { _settingsManager = settingsManager; _queuedQueuedEmailRepo = queuedEmailRepo; }
public void SendQueuedMessages(ISettingsManager settingsManager, ISmtpWrapper smtpWrapper, IQueuedEmailMessageRepository queuedEmailRepository, IErrorLog errorLog) { if (!Monitor.TryEnter(_syncRoot)) { return; } try { var messageGroup = new List <QueuedEmailMessage>(); for (var i = 1; i <= settingsManager.Current.MailerQuantity; i++) { var queuedMessage = queuedEmailRepository.GetOldestQueuedEmailMessage(); if (queuedMessage == null) { break; } messageGroup.Add(queuedMessage); queuedEmailRepository.DeleteMessage(queuedMessage.MessageID); } Parallel.ForEach(messageGroup, message => { try { smtpWrapper.Send(message); } catch (Exception exc) { if (message == null) { errorLog.Log(exc, ErrorSeverity.Email, "There was no message for the MailWorker to send."); } else { errorLog.Log(exc, ErrorSeverity.Email, String.Format("MessageID: {0}, To: <{1}> {2}, Subject: {3}", message.MessageID, message.ToEmail, message.ToName, message.Subject)); } } }); } catch (Exception exc) { errorLog.Log(exc, ErrorSeverity.Error); } finally { Monitor.Exit(_syncRoot); } }