Я пытаюсь определить, была ли ошибка, отправленная моим приложением, доставлена. Это означает, что я не пытаюсь проверить электронную почту, но на самом деле просто, если она достигла целевого почтового ящика.
Как только вы передадите сообщение в Exchange, оно может даже сразу не выйти. Как только Exchange попытается отправить его, он может обнаружить, что удаленный сервер недоступен, а затем повторить попытку позже.
В конце концов, Exchange либо заставит удаленный сервер принять сообщение, либо он сдастся.
Если удаленный сервер принимает сообщение, вы можете получить квитанцию об отправке, если настроите флаг в своем сообщении. Однако это не означает, что сообщение было фактически доставлено получателю или что получатель прочитал его; это только означает, что Exchange смог передать его на целевой сервер.
Многие серверы просто принимают и отбрасывают почту, отправленную несуществующему пользователю. Другие бросают их в глобальную папку «спам».
Если вы установите правильный адрес для ответа в своем сообщении, вы получите электронное письмо от Exchange, если сообщение не может быть доставлено на удаленный сервер в течение времени, установленного администратором Exchange. Это обычно пара дней.
Однако даже если вы установите флаг «Чтение квитанции», получатель может полностью прочитать сообщение, а не отправить его. Соблюдение является добровольным.
Действительно, очень короткий ответ: «Вы можете обнаружить немедленные сбои, но на самом деле не можете быть уверены, что сообщение было прочитано или доставлено», и в любом случае это не может произойти в вашем коде.
Если это полезно, есть несколько ошибок, которые могут быть обнаружены немедленно, и они появятся в вашем блоке try / catch, но это скорее исключение, чем правило.