我已经有一段时间在我网站的联系表单中使用 php 邮件功能来发送电子邮件。最近,我发现它只是停止工作。当我在我的联系表格中发送查询时,它说成功发送但我所做的测试都没有进入我的收件箱..
有人在这里遇到同样的问题吗?我怎么可能解决这个问题?
我检查了cpanel中的MX条目,数据是正确的。我想尝试 SMTP,但我没有访问信息。
在这件事上有什么帮助吗?
我发现的其他信息:Web 服务器托管在其中一家托管公司中。邮件服务器托管在 google 中。
这里的问题可能出在哪里?
问题可能出在您的托管服务提供商上,它“发现”您的表单正在产生大量流量并且被阻止。
或者出了什么问题。看/var/log/mail.*
问题。
您是否正确验证了 mail() 函数返回的内容?
检查您的 error_log 可能是个好主意,以确保它在 PHP 中没有任何内容。如果可以的话,尝试将您的代码放在另一台服务器上以查看邮件是否发送(使用邮件功能制作一个小程序)。如果是这样,那么它很可能是您的 ISP。
以下是直接连接到 SMTP 的方法:
$smtp = fsockopen("localhost", 25, $errno, $errstr, 15);
if(!$smtp) {
echo "failed";
}
else {
stream_set_timeout($smtp, 0, 80000);
fwrite($smtp, "HELO domainname.com\r\n");
stream_set_blocking($smtp, 0);
fwrite($smtp, "MAIL FROM:<".$from.">\r\n");
fwrite($smtp, "RCPT TO:<$to>\r\n");
fwrite($smtp, "DATA\r\n");
fwrite($smtp, "Date: ".date("r")."\r\n");
fwrite($smtp, "From: <".$from_address.">\r\n");
fwrite($smtp, "Reply-to: $replyto\r\n");
fwrite($smtp, "Subject: Test\r\n");
fwrite($smtp, "To: $to\r\n");
$outMsg .= "Whatever your email body is, then end it with a period on a new line\r\n.\r\n";
$bitesWritten = fwrite($smtp, $outMsg);
echo "Wrote $bitesWritten of " strlen($outMsg);
}
好吧,这里的问题是托管服务器的邮件 exim 被破坏了。因此,托管支持必须对其进行更新,从而解决问题。