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

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

1 Ответ

0 голосов
/ 15 мая 2018

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

...