【问题标题】:PHP 'mail()' Function Not Sending Email [duplicate]PHP'mail()'函数不发送电子邮件[重复]
【发布时间】:2016-11-28 12:56:29
【问题描述】:

我在 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);

..确实有效,所以使用标题似乎是个问题?

【问题讨论】:

  • 您的smtppop 服务器配置了吗?
  • @MridulKashyap 我不知道,但正如我所说的 - 它以前可以工作,而无需我配置它们
  • mail() 函数返回什么?是真是假?
  • 是的,但是我已经意识到如果我不包含标题(它们在我的垃圾邮件文件夹中),邮件正在发送 - 我的标题中是否存在会导致此问题的错误?
  • @CallanHeard 您的标题看起来不错。可能是服务器信誉问题?问题?

标签: php email


【解决方案1】:

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

$sender_email 不能是任何地址,例如您不能放置 gmail 地址并发送声称是该发件人的电子邮件,未经任何身份验证,您不得代表该地址发送电子邮件,因为例如我可以发送电子邮件,将您的地址放在 from,当我不在时假装是您(我尝试使用简单的词)

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

【讨论】:

  • 啊,这是有道理的,谢谢你的信息
【解决方案2】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-08
    • 2014-07-04
    • 1970-01-01
    • 2020-04-24
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多