PHP邮件没有发送 - 标题设置不正确?

时间:2009-09-13 18:31:18

标签: php email

之前我已经使用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 个答案:

答案 0 :(得分:3)

尝试查看服务器的邮件日志,了解它未被转发的原因。例如,可能是此服务器的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
}

根据您的偏好更改样式。

答案 1 :(得分:2)

你检查了mail()的返回值吗?如果它不是FALSE那么它被接受交付并且代码很好,但某些东西在其他地方搞砸了。

答案 2 :(得分:1)

这对我来说很好,也许可以

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

这可能会让你知道它是否正在尝试发送。

答案 3 :(得分:1)

只是不要在任何地方添加“\ r \ n”,只使用它来分隔标题。 在消息中,您只能使用\ n,它将起作用。  在主题和接收者的末尾,不需要“\ r \ n”。