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); }
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); } }
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); } }
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); } }
private MailMessage ToMailMessage(Email email) { Guard.NotNull(email, nameof(email)); return new MailMessage(email.Sender, email.Receiver, email.Subject, email.Body); }