0

我的邮件脚本在在线服务器上。工作正常。但是不是现在。我很困惑为什么它停止发送邮件。它显示了电子邮件发送的消息,但收件箱中没有收到电子邮件。这是我的 php 脚本:

$useremail = $_POST['myemail'];

    $friendemail = $_POST['friendemail'];

        $name = "support";

        $email = "support@example.com";

        $rec = $friendemail;

        $sub = "support Invitation";

        $body = 'the user '.$useremail.' has sent you message';

        $header="Content-type: text/html\n";

        $header .= "From: $name < ". $email ." >";

        $success_mail = mail($rec,$sub,$body,$header);
        if($success_mail){ echo "success0";} else { echo "Not sent";}

请帮我 !

4

1 回答 1

0

IME 与从 PHP 发送邮件有关的大多数问题是 MTA 的问题,与 PHP 无关。如果系统已停止发送邮件但您的 PHP 没有更改,那么这里可能也是这种情况。

您没有提供关于它运行在什么操作系统上的信息,也没有提供 PHP 是如何配置为使用邮件的信息——这在不同的操作系统上是非常不同的。

但收件箱中没有收到电子邮件

在发送电子邮件和它到达目的地之间发生了很多事情。通常它由发送端的 MTA 排队等待发送,传递到接收端的 MTA(可选地通过中间 MTA),在接收端应用策略检查,传递到接收端的 imap/pop 服务(可能通过进一步的策略检查),由您的邮件客户端检索(再次通过进一步的策略检查)。

您需要查看流程的每个步骤以找出失败的地方。

mysql_real_escape_string($_POST['friendemail']);

怎么回事?这是错误的。

$header="内容类型:文本/html\n";

尝试通过 SMTP 强制非 7 位 ascii 对您没有任何好处。这些天来,这应该不是一个大问题,也不太可能是错误的原因 - 但请尝试发送纯文本消息,看看会发生什么。

哦...再次查看您的代码,我发现您正在发送纯文本,所以 WTF 是 html 标头吗?

如果您想要任何可送达性保证,请修复电子邮件的编码,无论这是否不是这种情况下问题的原因。

于 2012-05-01T10:25:46.470 回答