Почта PHP не отправляется - заголовки установлены неправильно? - PullRequest
0 голосов
/ 13 сентября 2009

Я успешно отправил почту с помощью функции PHP mail () раньше, и для своего электронного письма с уведомлением о сбросе пароля я скопировал синтаксис, который использовал в другом месте, но, думаю, я испортил его, поскольку он не прибыл в пункт назначения , Вот код, который я использую:

$headers = 'To:'.$email."\r\n";
$headers .= 'From: webmaster@aromaclear.co.uk'."\r\n";
$to = $email."\r\n";
$subject = 'AromaClear Password Reset Notification'. "\r\n";
$msg = 'From: AromaClear'."\r\n";
$msg .='Subject: Your New Password'. "\r\n";
$msg .= 'Message: Your new password is '.$newpass."\r\n";
$msg.= 'If you have received this e-mail in error, please ignore it.'. "\r\n";

mail($to, $subject, $msg, $headers);

Есть мысли?

Ответы [ 4 ]

3 голосов
/ 13 сентября 2009

Попробуйте просмотреть почтовые журналы вашего сервера, чтобы понять, почему он не пересылается.Например, возможно, что sendmail этого сервера хочет флаг -f для заголовка From вместо того, чтобы указывать его в тексте заголовка.

mail($to, $subject, $msg, $headers, "-f $from");

Кроме того, вы, кажется, делаете много дополнительной / странной работы.Это намного проще:

$subject = "AromaClear Password Reset Notification";
$headers = "From: webmaster@aromaclear.co.uk";
$msg = "Your new password is $newpass\r\nIf you have received this e-mail in error, please ignore it.\r\n.";

if(mail($email, $subject, $msg, $headers))
{
  //handle success
}
else
{
  //handle failure
}

Измените стиль по своему вкусу.

2 голосов
/ 13 сентября 2009

вы проверили возвращаемое значение mail (). Если это не FALSE, то он принимается для доставки, и код в порядке, но что-то напутано в другом месте.

1 голос
/ 13 сентября 2009

Только не добавляйте "\ r \ n" везде, используйте его только для разделения заголовков. В сообщении вы можете использовать только \ n, оно будет работать. И в конце темы и получателя нет нужды в "\ r \ n".

1 голос
/ 13 сентября 2009

Мне кажется, это нормально.

if (mail($to_email,$subject,$message, $headers))
    echo 'Success';
else
    echo 'Error';
}

Это может дать вам знать, если оно вообще пытается отправить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...