Подтвердить что ты не робот

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

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

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

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

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

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

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

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

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

Ответ 4

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

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