Я отправляю пользователям электронное письмо на основе данных формы. После просмотра документов для почта, Я разобрался, как отправить электронное письмо. Однако, скажем, пользователь сделал опечатку в своем вводе, как я могу показать пользователю, что его электронная почта отскочила?
Вот мой код, который не работает
if( count(Mail::failures()) > 0 ) {
echo "There was one or more failures. They were: <br />";
foreach(Mail::failures as $email_address) {
echo " - $email_address <br />";
}
} else {
echo "No errors, all sent successfully!";
}
«Не работает» означает, что я могу написать случайное письмо, такое как [email protected]
и это скажет "No errors, all sent successfully!"
Простой ответ: вы не можете проверить это в Laravel.
Вы указываете адрес отправителя в своей конфигурации laravel, и если вы отправите электронное письмо с этого адреса на несуществующий адрес, оно все равно будет отправлено в ваш smtp-сервис и на принимающий сервер, на котором хранится имя домена адреса. В некоторых случаях вам будет возвращен ответ не получателя с этого сервера, а в некоторых — нет. Это не зависит от того, куда вы отправляете письмо из Laravel или из другого почтового клиентского приложения.
Если вы хотите запретить пользователям вводить o-o, вместо этого вам следует рассмотреть возможность добавления поля проверки и заставить пользователя повторно вводить адрес электронной почты и проверять его с помощью правила проверки _confirmation в Laravel. (https://laravel.com/docs/5.2/validation#rule-confirmed)
Я думал, что это невозможно, но после поиска я нашел это:
https://github.com/hbattat/verifyEmail
Это функция PHP, которую можно легко использовать для проверки адреса электронной почты и проверки его правильности и наличия на почтовом сервере.
Эта функция подключается к почтовому серверу и проверяет, существует ли почтовый ящик или нет.
Просто вызовите функцию:
verifyEmail('[email protected]', '[email protected]');
Первый адрес электронной почты «[email protected]» — это тот, который нужно проверить, а второй «[email protected]» — это адрес электронной почты, который необходимо предоставить серверу (просто для тестирования, но было бы лучше, если это действительный адрес электронной почты)
Это перезапустит строку «valid», если электронная почта [email protected] действительна, и «invalid», если электронная почта недействительна
Надеюсь, поможет!
Просто хотел добавить, что вы никогда не должны доверять Mail :: failures (), поскольку он будет возвращать ошибки только в очень специфических случаях, а это почти никогда. Например, SMTP может немедленно вернуть ошибку, но sendmail почти никогда этого не делает. Mail: failures () может быть подходящим для обработки неожиданных ошибок отправителя (неудачная проверка подлинности или что-то подобное), но не для проверки.
Так что да, в большинстве случаев вы можете узнать, был ли адрес верным после отправки на него электронного письма.