Вы можете получить сообщение об исключении, даже если ваши учетные данные, предоставленные почтовым серверам, будут в порядке сами по себе, но поле «От» не соответствует данному конкретному пользователю.(Это функция, ограничение, налагаемое серверами SMTP для предотвращения подмены отправителя. Сам протокол SMTP настолько либерален, что теоретически вы можете записать любой адрес электронной почты в поле «От». Предотвращение подмены очень важнодля борьбы со спамом в электронной почте.)
В общем, если вы делаете что-то не так, вы получите SmtpException, который является неожиданно описательным.Иногда встроенное внутреннее исключение различает больше случаев.Вам просто нужно отладить различные случаи, я разобрался с некоторыми:
- Если адрес электронной почты "от" не совпадает с адресом электронной почты аутентифицированного пользователя, что он /она имеет право, вы получите SmtpException, говорящий «Почтовый ящик недоступен».и «Клиент не имеет разрешений на отправку в качестве этого отправителя».
- Если вы укажете неправильный хост или порт, сообщение SmtpException будет начинаться с «Почтовый ящик недоступен». У него будет внутреннее исключение типаWebException, говорящий «Невозможно подключиться к удаленному серверу», который будет иметь внутреннее исключение самого типа SocketException, говоря: «Невозможно установить соединение, потому что целевая машина активно отказала ему».
- Если вы включитеSSL (mailSender.EnableSsl = true; // для вашего кода), но SMTP-сервер не поддерживает его, или наоборот, тогда вы получите SmtpException, говорящее «Сервер не поддерживает безопасные соединения».
- Если учетные данные (имя пользователя / пароль) неверны или возникли другие проблемы с SSL, вы получите сообщение SmtpExeption, в котором говорится, что «SMTP-серверу требуется безопасное соединение или клиент не прошел проверку подлинности».1014 * Еще одна вещь, на которую следует обратить внимание, это то, как именно вы создаете объект NetworkCredential.
Система.Net.Mail очень удобно!