【问题标题】:Mail function has stopped working on server邮件功能已停止在服务器上运行
【发布时间】:2012-05-01 18:43:30
【问题描述】:

我的邮件脚本在在线服务器上。工作正常。但是不是现在。我很困惑为什么它停止发送邮件。它显示了电子邮件发送的消息,但收件箱中没有收到电子邮件。这是我的 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";}

请帮帮我!

【问题讨论】:

  • 服务器停止工作时发生了什么变化?
  • 您检查过您的垃圾邮件文件夹吗?如果您的邮件服务器以接近垃圾邮件的方式接收邮件,它可能会将其归类为垃圾邮件
  • +1 测试电子邮件进入垃圾邮件文件夹让很多人头疼。
  • 如果您发送垃圾邮件,某些服务器只允许有限的邮件流量并阻止您的邮件功能,如果是这种情况,请与您的主机联系。
  • @tomhallam: 否 - 传递给邮件程序的参数(假设这是 *nix 实施而不是 MSWindows)无论如何都会被转义 - 双重转义会导致更多问题。

标签: php email function sendmail


【解决方案1】:

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

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

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

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

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

mysql_real_escape_string($_POST['friendemail']);

WTF?这是错误的。

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

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

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

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

【讨论】:

  • 几分钟前它正在发送电子邮件,发送的是html正文,而不是纯文本。
  • 请帮忙!我仍在寻找解决方案。 :(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多