public ProcessMailQueueAsync ( IEmailProcessor processor ) : System.Threading.Tasks.Task | ||
processor | IEmailProcessor | |
Résultat | System.Threading.Tasks.Task |
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);
}
}
}
}
public async Task SendAsync() { string template = GetTemplate(); string parsed = ParseTemplate(template); string subject = "Welcome to " + HttpContext.Current.Request.Url.Authority; string catalog = AppUsers.GetCatalog(); var email = this.GetEmail(this._user, subject, parsed); var queue = new MailQueueManager(catalog, email); queue.Add(); await queue.ProcessMailQueueAsync(EmailProcessor.GetDefault()); }