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 за удар, необходимый для правильной работы моего лишенного сна мозга.