PHP'mail()'函数不发送电子邮件

时间:2016-07-25 08:55:01

标签: php email

我在1& 1托管服务器上使用基本脚本:

$recipient = "email@domain.com";
$sender_name = $_POST['name'];
$sender_email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];

$headers = "MIME-Version: 1.0"."\r\n";
$headers .= "Content-type:text/html; charset=UTF-8"."\r\n";
$headers .= "From: {$sender_name} <{$sender_email}>"."\r\n";
$headers .= "Reply-to: {$sender_name} <{$sender_email}>"."\r\n";

mail($recipient, $subject, $message, $headers);

..但由于某些原因,我没有收到任何电子邮件,也没有按照PHP mail() function not sending email指示发现任何错误。

我认为这可能是服务器问题,但1&1 states完全支持它。在使用收件人,主题和正文之前,我还发送了来自此服务器/主机的电子邮件,所以我不确定为什么它现在不起作用了!

更新

无标题发送,即:

mail($recipient, $subject, $message);

..确实有效,所以使用标题会出现问题吗?

2 个答案:

答案 0 :(得分:5)

可能有很多原因,例如你应该研究SPF是什么。

$ sender_email不能是任何地址,例如您不能放置Gmail地址并发送声称是该发件人的电子邮件,未经任何身份验证,您不得代表该地址发送电子邮件,因为我可以例如发送电子邮件将你的地址放入发件人,当我不是时(我试图使用简单的单词),你可以将它作为你的推荐。

您应该使用以@ yourdomain.com结尾的From内容,并设置SPF以允许您的服务器的IP发送该域的电子邮件。或者通过SMTP发送电子邮件(例如,使用PHPmailer,这很容易)

答案 1 :(得分:0)

标题中的错误确实会影响邮件传递。例如,如果你发送错误标题的电子邮件,假设用户的电子邮件是user@email.com,他的名字是“用户用户”,你发送电子邮件到user@email.com它可能会导致电子邮件发送到如果在服务器上不匹配,则进入垃圾邮件或根本不被接受。

Gmail,其中一个名称与每个电子邮件ID相关联。如果您在电子邮件中输入了错误的名称,则电子邮件可能不会显示在收件箱中,有时甚至不会显示在垃圾邮件中。

“但在我附上的链接中,给出的示例使用了由表单输入设置的'from'标题?”

如果您希望用户能够向您发送电子邮件,最好使用您自己的电子邮件地址作为发件人电子邮件。例如。如果您的网站位于website.com,请配置“contact@website.com”等电子邮件并配置您的脚本以将其用作From标头,您可以将其发送到您自己在同一域(website.com)或任何域的电子邮件中。您授权的其他电子邮件。您可以在邮件中添加用户的实际详细信息。这将确保始终成功发送电子邮件。