ActionMailer.net/ActionMailerNext - как проверить, было ли отправлено электронное письмо?

Работать с ActionMailerNext, который является ответвлением ныне мёртвого ActionMailer.net, и я не могу на всю жизнь выяснить, как определить, было ли отправлено электронное письмо или произошла ошибка, которая помешала отправке электронного письма.

Ни один сайт не дает представления о том, как это сделать. Два часа поиска в Google были одинаково продуктивны (НЕ!).

Как правило, с чем-то вроде обновления базы данных, я могу сделать

if((await _db.SaveChangesAsync()) > 0){ ... }

и иметь возможность раскладывать код между частями yes-it-updated и no-it-fail. Мне нужно быть в состоянии сделать это с ActionMailerNext, и я понятия не имею, как.

Настоящий .Deliver() возвращает

System.Collections.Generic.IList<ActionMailerNext.Interfaces.IMailResponse>

Но я понятия не имею, как распаковать его, потому что я понятия не имею, что внутри него. Любая попытка Google IMailResponse не возвращает мне ничего полезного.


РЕДАКТИРОВАТЬ:

Для тех, кто хотел бы знать, возвращенная коллекция содержит две переменные: строку Email и Enum с именем DeliveryStatus, который предоставляет один из четырех ответов для каждой отправленной электронной почты: DELIVERED, INVALID, QUEUED и REJECTED. Сделав следующее, даже если было отправлено только одно электронное письмо (потому что мои потребности просты):

if(e.All(x => x.DeliveryStatus == DeliveryStatus.DELIVERED)) {
  // Do if ALL eMails were sent
} else {
  // Fallback if ANY eMail was not sent
}

Я смог убедиться, что существует запасной вариант, если одно или несколько сообщений электронной почты не удалось отправить.

Имейте в виду, однако: это только для электронной почты, доставляемой на исходящий SMTP-сервер; система не имеет ни малейшего представления о том, что происходит дальше.

Спасибо @ADyson ниже за то, что мой мозг, лишенный сна, функционировал правильно.

1 ответ

Решение

Для тех, кто хотел бы знать, возвращенная коллекция содержит две переменные: строку Email и Enum с именем DeliveryStatus, который предоставляет один из четырех ответов для каждой отправленной электронной почты: DELIVERED, INVALID, QUEUED и REJECTED. Сделав следующее, даже если было отправлено только одно электронное письмо (потому что мои потребности просты):

if(e.All(x => x.DeliveryStatus == DeliveryStatus.DELIVERED)) {
  // Do if ALL eMails were sent
} else {
  // Fallback if ANY eMail was not sent
}

Я смог убедиться, что существует запасной вариант, если одно или несколько сообщений электронной почты не удалось отправить.

Имейте в виду, однако: это только для электронной почты, доставляемой на исходящий SMTP-сервер; система не имеет ни малейшего представления о том, что происходит дальше.

Спасибо @ADyson за удар, необходимый для правильной работы моего лишенного сна мозга.

Другие вопросы по тегам