Ejemplo n.º 1
0
        public async Task EnqueueMailAsync(Email email)
        {
            Guard.NotNull(email, nameof(email));

            var queue = await this.GetQueueAsync();
            var message = new CloudQueueMessage(JsonConvert.SerializeObject(email));

            await queue.AddMessageAsync(message, null, TimeSpan.FromSeconds(20), null, null);
        }
Ejemplo n.º 2
0
        public async Task SendMailAsync(Email email)
        {
            Guard.NotNull(email, nameof(email));

            using (var mailMessage = this.ToMailMessage(email))
            using (var client = this.CreateSmtpClient())
            {
                await client.SendMailAsync(mailMessage);
            }
        }
Ejemplo n.º 3
0
        public async Task TryAgainLaterAsync(Email email)
        {
            Guard.NotNull(email, nameof(email));

            CloudQueueMessage message;
            if (this._dequeuedMessages.TryRemove(email, out message))
            {
                var queue = await this.GetQueueAsync();
                await queue.UpdateMessageAsync(message, TimeSpan.FromSeconds(Config.Email.OnErrorTryToSendEmailAgainAfterMinutes), MessageUpdateFields.Visibility);
            }
        }
Ejemplo n.º 4
0
 public async Task RemoveAsync(Email email)
 {
     Guard.NotNull(email, nameof(email));
     
     CloudQueueMessage message;
     if (this._dequeuedMessages.TryRemove(email, out message))
     {
         var queue = await this.GetQueueAsync();
         await queue.DeleteMessageAsync(message);
     }
 }
Ejemplo n.º 5
0
        private MailMessage ToMailMessage(Email email)
        {
            Guard.NotNull(email, nameof(email));

            return new MailMessage(email.Sender, email.Receiver, email.Subject, email.Body);
        }