public async Task ProcessMailQueueAsync(IEmailProcessor processor)
{
var queue = await MailQueue.GetMailInQueueAsync(this.Database).ConfigureAwait(false);
var config = new Config(this.Database, this.Processor);
if(this.IsEnabled())
{
foreach(var mail in queue)
{
var message = EmailHelper.GetMessage(config, mail);
var attachments = mail.Attachments?.Split(',').ToArray();
bool success = await processor.SendAsync(message, false, attachments).ConfigureAwait(false);
if(!success)
{
continue;
}
mail.Delivered = true;
mail.DeliveredOn = DateTimeOffset.UtcNow;
await MailQueue.SetSuccessAsync(this.Database, mail.QueueId).ConfigureAwait(false);
}
}
}
}