PHPs邮件功能不支持';不要向某些服务器发送电子邮件

PHPs邮件功能不支持';不要向某些服务器发送电子邮件,php,email,Php,Email,我有以下代码,这些代码在某些服务器上有效,但在其他服务器上无效: $Name = "myname"; //senders name $email_sender = "myemail.dia@gmail.com"; //senders e-mail adress $recipient = $email; //recipient $mail_body = "The text for the mail..."; //mail bo

我有以下代码,这些代码在某些服务器上有效,但在其他服务器上无效:

$Name = "myname"; //senders name
            $email_sender = "myemail.dia@gmail.com"; //senders e-mail adress
            $recipient = $email; //recipient
            $mail_body = "The text for the mail..."; //mail body
            $subject = "Subject for reviever"; //subject
            $header = "From: ". $Name . " <" . $email_sender . ">\r\n"; 
                        $status = mail($recipient, $subject, $mail_body, $header); 
            print('ENVOI '. $status);
$Name=“myname”//发件人姓名
$email\u sender=“myemail。dia@gmail.com"; //发件人电子邮件地址
$recipient=$email//收件人
$mail_body=“邮件的文本…”//邮件正文
$subject=“subject for reviever”//主题
$header=“From:”$名称“\r\n”;
$status=mail($recipient,$subject,$mail\u body,$header);
打印('环境'$状态);

$status变量为true,但我看不到任何电子邮件。

这可能相关,也可能无关,但您有一个非常简单的标题,我将用下面的内容替换您的标题变量,看看这是否对您有所改变

$headers = 'From: ' .$email_sender. "\r\n" .
    'Reply-To: ' .$email_sender. "\r\n" .
    'X-Mailer: PHP/' . phpversion();

确保您在相关服务器上的smtp设置正确。

$status为true并不意味着您的收件人已收到邮件。这只是意味着邮件功能成功地将邮件传递到本地传递代理。在那之后,它就不再由PHP控制了

该过程如下所示:

  • PHP脚本调用
    mail()
  • mail()
    将邮件发送到本地邮件服务器(sendmail、postfix、exim等)
  • mail()
    成功完成电子邮件的“传递”后,返回
    TRUE
  • 本地邮件服务器连接到收件人的邮件服务器,传递邮件
  • 收件人的邮件服务器会尽其所能将电子邮件发送到收件人的收件箱中
  • 由于
    mail()
    返回的是true,这意味着至少您发送的代码是正确的,不会在该阶段导致问题爆发。这会在您和收件人的邮件服务器之间留下传递问题:

    a) 也许收件人正在使用greylisting(在这种情况下,邮件最终应该显示出来)。可能您的服务器在greylist超时期限到期之前放弃,因此永远不会进行重试尝试

    b) 你的邮件服务器被列入黑名单。您的服务器和/或某些其他潜在垃圾邮件源位于同一个netblock中,已添加到收件人订阅的一个或多个反垃圾邮件RBL列表中

    c) 也许远程服务器对报头的正确性非常挑剔,而您的服务器对一个或多个报头过于放松

    至少这些问题应该在您自己的邮件服务器的邮件日志中可见(在大多数Unix系统上通常是/var/log/maillog)。在查看日志的同时尝试发送测试邮件,以查看消息在系统中的处理方式。还要检查服务器的传出邮件队列(
    mailq
    命令,通常)。也许丢失的信息卡在那里了

    还有更大的问题:

    d) 远程邮件服务器正在接受该邮件,但由于该邮件被标记为垃圾邮件或已感染,因此会默默地将其丢弃。这是您无法从自己的邮件日志中检测到的,因为这完全是在收件人端完成的。您将看到的只是“250 OK”成功消息


    为此,您需要收件人帮助诊断问题。

    是Windows服务器还是Unix服务器?两者都可能配置错误。服务器是APACHE服务器,我检查sendmail_from函数没有值,然后我将me@localhost.com但我仍然没有在我的收件箱中看到电子邮件。嗨,伙计们,我无法解决我的邮件服务器问题!我听说了一个关于“PHPMAILER”的故事。这可能会帮助我使用邮寄php功能!有人能告诉我更多关于这一点,谢谢你的回答真的很清楚。我要检查邮件日志,检查php.ini路径中的邮件服务器部分。。我会回来告诉你发生了什么!