Intereting Posts
PHP-скрипт возвращает значение null при вставке <a> в базу данных MYSQL находит, как разные текстовые поля? Почему не могут взаимодействовать скрипты на стороне сервера и на стороне клиента? Проблема с размерностью загружаемого файла в PHP и MySql Вызов Perl-скрипта из PHP и передача в переменных, а также использование имени переменной perl-скрипта Twitter API извлекает данные профиля из заданного токена после перенаправления на URL-адрес обратного вызова Санитация при хранении сериализованного массива Magento получает изображения продукта в корзине покупок Когда использовались функции закрытия, реализованные в PHP? Самый быстрый способ определения страны пользователя SQL-запрос с двоичными данными (PHP и MySQL) Обнаружение полного или частичного файла в PHP ZF2 отключает прослушиватель от EventManager Каков наилучший способ справиться с этим: большая загрузка через PHP + медленное соединение с клиента = время ожидания скрипта перед загрузкой файла полностью Как получить значение hash (#) в строке запроса

php – обнаружит, отправлено ли электронное письмо

Я создаю автоматизированный информационный бюллетень, который каким-то образом застрял в этой проблеме. Мне нужно знать, отправлено ли электронное письмо или нет. Вот мой код

@$send = mail($emailRecipient, $subject, $message, $headers); 

Я попытался добавить его в оператор if, но он не работает здесь, это код.

 if( @$send = mail($emailRecipient, $subject, $message, $headers)){ //do something }else{ //do something } 

 if(@mail($emailRecipient, $subject, $message, $headers)) { echo "Mail Sent Successfully"; }else{ echo "Mail Not Sent"; } 

Во-первых, я бы предложил использовать стороннюю почтовую библиотеку ( SwiftMailer , PHPMailer , Zend_Mail …) для отправки электронной почты вместо встроенной mail . Компоновка почты сложнее, чем большинство людей понимают, особенно если вы хотите делать многостраничные и / или форматированные HTML-сообщения.

Во-вторых, помимо проверки того, было ли сообщение успешно доставлено на первую (обычно локальную) почтовую службу, практически невозможно определить, было ли отправлено электронное письмо. Это связано с тем, что почта по сути работает, и есть немного, чем можно сделать по этому поводу.

Единственное, что вы можете (и действительно должны) делать, это убедиться, что ваша система обрабатывает возвращенные письма разумным способом. например. Если адрес электронной почты постоянно отскакивает, рассмотрите отказ от подписки на адрес.

Вот правда: к сожалению, вы не можете надежно определить, было ли отправлено или получено электронное письмо: электронная почта не является надежной формой общения.

Результат вызова mail() указывает только на то, что PHP смог отправить электронное письмо в MTA, но это не укажет, действительно ли отправлено электронное сообщение или что получатель действительно получил его.

Если вы хотите повысить надежность, вы должны использовать что-то другое, кроме mail() . Хотя я никогда не использовал его, PHPMailer или другая библиотека SMTP может предоставить вам возвращаемую информацию из MTA, которая расскажет вам больше о доставке в очередь, но без опроса для сообщения о отказе (которое может или не может быть доставлено в отправителя), вы не можете сказать, получил ли получатель электронное письмо.

Вы также можете попробовать это

 $send = mail($to,$subject,$msg); if($send) { echo "Your Account is Successfully Created. You must Activate your account."; } else echo "Failed to send";