3

我已经有一段时间在我网站的联系表单中使用 php 邮件功能来发送电子邮件。最近,我发现它只是停止工作。当我在我的联系表格中发送查询时,它说成功发送但我所做的测试都没有进入我的收件箱..

有人在这里遇到同样的问题吗?我怎么可能解决这个问题?

我检查了cpanel中的MX条目,数据是正确的。我想尝试 SMTP,但我没有访问信息。

在这件事上有什么帮助吗?

我发现的其他信息:Web 服务器托管在其中一家托管公司中。邮件服务器托管在 google 中。

这里的问题可能出在哪里?

4

5 回答 5

2

问题可能出在您的托管服务提供商上,它“发现”您的表单正在产生大量流量并且被阻止。

于 2012-07-05T15:23:13.617 回答
1

或者出了什么问题。看/var/log/mail.*问题。

于 2012-07-05T15:26:44.757 回答
1

您是否正确验证了 mail() 函数返回的内容?

检查您的 error_log 可能是个好主意,以确保它在 PHP 中没有任何内容。如果可以的话,尝试将您的代码放在另一台服务器上以查看邮件是否发送(使用邮件功能制作一个小程序)。如果是这样,那么它很可能是您的 ISP。

于 2012-07-05T15:26:45.740 回答
1

以下是直接连接到 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);
}
于 2012-07-05T15:36:01.483 回答
0

好吧,这里的问题是托管服务器的邮件 exim 被破坏了。因此,托管支持必须对其进行更新,从而解决问题。

于 2012-07-06T19:43:55.857 回答