对 PHP 电子邮件发送进行故障排除?

对 PHP 电子邮件发送进行故障排除?

我创建了一个网站,当用户注册/更改密码等时偶尔会向他们发送电子邮件。

但其他人却收不到或根本没有收到电子邮件。他们告诉我,这些电子邮件甚至没有进入垃圾邮件文件夹。

我不太了解 MX 记录或电子邮件发送,但是当我针对该域“编辑 DNS 区域”时,那里列出了 1 个 MX 记录。

如何解决 PHP 邮件操作失败的问题?

更新:下面是我的超级简单的 php 邮件代码:

$subject = "Subject Here";
$message = "Emails Message";
$to      = $verified_user_data["email_address"];
$headers = "From: [email protected]\r\n" .
"Reply-To: [email protected]\r\n" .
"X-Mailer: PHP/" . phpversion();

//returns true on success, false on failure
$email_result = mail($to, $subject, $message, $headers);

关于:“你是说有些人会,有些人不会吗?”@雅各布

是的,基本上是这样。我使用上述类似代码发送包含用户登录用户名/密码的电子邮件。我向相当精通技术的人销售产品。大约 50% 的时间里,我的客户声称他们无法在收件箱或垃圾邮件箱中找到欢迎电子邮件。就好像它从未到达过一样。我遇到的最大问题是 Yahoo 电子邮件地址无法接受我的电子邮件,或者看起来如此。

关于:“您这边的 MX 记录不会影响到您,但 SPF 记录(或缺少 SPF 记录)会。您对服务器本身有多少访问和控制权?”@约翰·加德尼尔斯

我从 Codero 租用了一台专用服务器。运行 CentOS 5、WHM + cPanel。我对整个服务器有完全的 root 访问权限。不太了解 MX 记录和/或 SPF 记录。我只想让 PHP 邮件功能正常工作。php 邮件功能的帮助页面上没有太多关于这方面的说明。

关于:“您使用什么 SMTP 服务器?”@乔恩·林

不知道。当我需要向忠实客户发送电子邮件时,我会使用上述代码,仅此而已。我需要担心 SMTP 服务器吗?

关于:“可能有很多很多原因。你能描述一下你是如何用代码发送邮件的吗?例如,你是否使用本地 sendmail 或 postfix 从另一个邮件服务器转发邮件?哪些域名可以/不能接收邮件?你是否为发送邮件的 IP 地址设置了 PTR 记录?SPF 记录呢?”@肉汁脸

上面我只是描述了我的简单代码!

我相信我在使用 Yahoo 域名时遇到的麻烦最多,但是“独立”域名(可能运行 spamassasin)例如。[电子邮件保护]而不是[电子邮件保护]似乎也带来很多麻烦。我不知道我是否从发送邮件的 IP 地址设置了 PTR 记录。它可能与我设置域名的 IP 地址相同,因为我没有做任何特别的事情。我也不知道 SPF 记录,我可以在哪里创建一个?

边注:垃圾邮件发送者给我们心爱的电子邮件系统带来的破坏实在令人痛惜。

答案1

可能有很多很多原因。你能描述一下你是如何用代码发送邮件的吗?例如,你是否使用本地 sendmail 或 postfix 从某个地方的另一个邮件服务器进行中继?可以/不能接收电子邮件的域是否一致?你是否从发送邮件的 IP 地址设置了 PTR 记录?SPF 记录呢?

编辑

我怀疑:

  • 你被列入了黑名单。将你的 IP 插入 MXToolbox 的黑名单检查并让我们知道结果。可能是您的服务器所在的整个区块;也许垃圾邮件发送者曾经/现在仍然存在,如果是这种情况,您应该更换托管服务提供商,因为从黑名单中删除可能很耗时(或者在您的情况下,是不可能的)。

  • 您没有设置 PTR 记录。您需要验证或要求您的托管服务提供商为您创建一个。

  • 如果主要是雅虎,那么你应该看看他们的最佳实践用于发送邮件。

  • 您是否在伪造发件人:地址?我会设置 SPF 记录(在您的 DNS 区域的“TXT”下;它是非常坦率的并且您的DNS管理界面可能有一个内置向导)。

相关内容