【问题标题】:PHP mail is not sending, but result is truePHP邮件未发送,但结果为真
【发布时间】:2014-10-16 01:05:14
【问题描述】:

我使用 phpmailer 发送电子邮件。在一个脚本中,代码运行良好,在其他例子中,结果为真,但没有邮件送达。错误日志为空,您建议检查什么? 谢谢

include_once '/var/www/xxxxxx.cz/web/php/phpmailer.php';
$to = 'dubcznic@gmail.com';
$to_name = '';
$from = 'robot@xxxxxx.cz';
$from_name = 'Robot';
$mail = new phpmailer();
$mail->CharSet = 'UTF-8';
$mail->From = $from;
$mail->FromName = $from_name;
$mail->AddAddress($to, $to_name);  // Add a recipient
$mail->AddCC('nabytek-safr@xxxx.cz');
$mail->WordWrap = 50;     // Set word wrap to 50 characters
$mail->IsHTML(true);      // Set email format to HTML
$mail->Subject = 'Import Robot Autronic';
$mail->Body = 'xxx';
$mail->AltBody = str_replace("<br />", "\n", 'xxx');
if (!$mail->Send())
{
    echo 'Mail Error: ' . $mail->ErrorInfo;
    exit;
}
else
{
    echo 'OK';
}

die();

【问题讨论】:

  • 重要的是要注意,仅仅因为mail() 函数在php 中返回TRUE,并不意味着邮件实际上会到达预期的收件人。返回 TRUE 表示 PHP 脚本范围之外的问题,可能是客户端电子邮件的垃圾邮件过滤器。
  • 检查您的邮件日志。位置取决于 MTA,但通常位于 /var/log/mail.log/var/log/mail/
  • @DerrickTucker 他没有使用mail()。他正在使用PHPMailer's Send(),它执行的额外验证优于mail()
  • @MikeB 仍然使用mail(),除非指定了 SMTP 或 sendmail
  • @MikeB 我相信Send() 本身确实使用mail()。不管怎样,原理都是一样的。

标签: php mailer


【解决方案1】:

检查您发送的文本。可能是您的结果被过滤掉并放入垃圾邮件文件夹。有时标题中带有“测试”的邮件可能会直接发送到垃圾邮件。

【讨论】:

    【解决方案2】:

    无法验证电子邮件是否使用 PHP 发送。

    检查您的邮件服务器日志(通常是 /var/log/mail)以查看电子邮件是否已发送。

    向您知道没有垃圾邮件过滤器的电子邮件地址发送密件抄送。

    【讨论】:

      【解决方案3】:

      您可以使用 Telnet 和 MX 记录验证真实电子邮件。看到这个答案 https://stackoverflow.com/a/17332773/468891

      【讨论】:

        【解决方案4】:

        首先,检查您的垃圾邮件(如果您还没有)。

        其次,将您的 SMTP 设置更改为 gmail 的设置,输入您的 gmail 登录名和密码并尝试。 如果邮件未能投递,您将收到一封投递失败通知,其中包含可能的失败原因,这很有帮助。当 PHP 中没有显示错误时,也可能发生交付失败。 这总是对我有帮助。

        【讨论】:

          猜你喜欢
          • 2013-06-19
          • 2016-11-12
          • 1970-01-01
          • 1970-01-01
          • 2021-06-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多