Работая с 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
не возвращает мне ничего полезного.
EDIT:
Для тех, кто хотел бы знать, возвращаемая коллекция содержит две переменные: строку 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 ниже за удар, необходимый для правильного функционирования моего лишенного сна мозга.