Beispiel #1
0
		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);
			}
		}
Beispiel #2
0
 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);
     }
 }
Beispiel #5
0
 public QueuedEmailService(IQueuedEmailMessageRepository queuedEmailMessageRepository, IEmailQueueRepository emailQueueRepository, ITenantService tenantService)
 {
     _queuedEmailMessageRepository = queuedEmailMessageRepository;
     _emailQueueRepository         = emailQueueRepository;
     _tenantService = tenantService;
 }
Beispiel #6
0
 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 SubscribedTopicEmailComposer(ISettingsManager settingsManager, IQueuedEmailMessageRepository queuedEmailRepo)
		{
			_settingsManager = settingsManager;
			_queuedQueuedEmailRepo = queuedEmailRepo;
		}
Beispiel #9
0
 public MailingListComposer(ISettingsManager settingsManager, IQueuedEmailMessageRepository queuedEmailRepo)
 {
     _settingsManager       = settingsManager;
     _queuedQueuedEmailRepo = queuedEmailRepo;
 }
Beispiel #10
0
 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;
		}