public static MailQueueItem CreateItemForAccount(MailBox account, MailItemManager manager) { var item = new MailQueueItem(account); item.GetStoredMessagesUidlMd5 += manager.GetStoredMessagesUIDL_MD5; item.OnRetrieveNewMessage += manager.OnRetrieveNewMessage; item.OnUpdateUidl += manager.OnUpdateUidl; item.OnAuthSucceed += manager.OnAuthSucceed; item.OnAuthFailed += manager.OnAuthFailed; item.OnDone += manager.OnDone; item.OnTimeCheckedUpdate += manager.OnCheckedTimeUpdate; item.OnGetOrCreateTags += manager.OnGetOrCreateTags; item.OnUpdateMessagesTags += manager.OnUpdateMessagesTags; return item; }
public static MailQueueItem CreateItemForAccount(MailBox account, MailItemManager manager) { var item = new MailQueueItem(account); item.GetStoredMessagesUidlMd5 += manager.GetStoredMessagesUIDL_MD5; item.OnRetrieveNewMessage += manager.OnRetrieveNewMessage; item.OnUpdateUidl += manager.OnUpdateUidl; item.OnAuthSucceed += manager.OnAuthSucceed; item.OnAuthFailed += manager.OnAuthFailed; item.OnDone += manager.OnDone; item.OnTimeCheckedUpdate += manager.OnCheckedTimeUpdate; item.OnGetOrCreateTags += manager.OnGetOrCreateTags; item.OnUpdateMessagesTags += manager.OnUpdateMessagesTags; return(item); }
private async Task <Mail> ProduceMailAsync(MailQueueItem queueItem, IServiceProvider serviceProvider, CancellationToken cancellationToken) { IMailTypeDefinition mailTypeDefinition; try { mailTypeDefinition = _mailTypeCatalog.GetDefinition(queueItem.MailType, throwIfNotFound: true) !; } catch (ArgumentException ex) { return(new Mail(queueItem, null, new MailTypeNotSupportedException(ex))); } MailModel mailModel; try { mailModel = mailTypeDefinition.DeserializeModel(queueItem.MailModel); } catch (Exception ex) { return(new Mail(queueItem, null, new MailModelSerializationException(ex))); } var mailMessageProducer = mailTypeDefinition.CreateMailMessageProducer(serviceProvider); MimeMessage message; try { message = await mailMessageProducer.ProduceAsync(mailModel, cancellationToken).ConfigureAwait(false); } catch (Exception ex) when(!(ex is OperationCanceledException)) { return(new Mail(queueItem, null, ex)); } return(new Mail(queueItem, message, null)); }
public Mail(MailQueueItem queueItem, MimeMessage?message, Exception?error) { QueueItem = queueItem; Message = message; Error = error; }
private async Task RegisterItemFailureAsync(WritableDataContext dbContext, MailQueueItem queueItem, bool canRetry, CancellationToken cancellationToken) { queueItem.DueDate = canRetry ? GetRetryDueDate(queueItem.CreationDate, queueItem.DueDate !.Value) : (DateTime?)null; await dbContext.SaveChangesAsync(cancellationToken).ConfigureAwait(false); }