Frapid.Messaging.MailQueueManager.ProcessMailQueueAsync C# (CSharp) Method

ProcessMailQueueAsync() public method

public ProcessMailQueueAsync ( IEmailProcessor processor ) : System.Threading.Tasks.Task
processor IEmailProcessor
return 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);
                }
            }
        }
    }

Usage Example

コード例 #1
0
ファイル: WelcomeEmail.cs プロジェクト: nubiancc/frapid
 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());
 }
All Usage Examples Of Frapid.Messaging.MailQueueManager::ProcessMailQueueAsync