【问题标题】:PHP bad mail headersPHP 错误的邮件标头
【发布时间】:2013-06-29 20:59:33
【问题描述】:

我想通过mail() 函数发送电子邮件。

mail($to,$subject,$message) 工作正常。

但是使用mail($to,$subject,$message,$header) 不起作用。 标题是:

Date: Tue, 2 Jul 2013 15:01:49 +0200 +0200
Return-Path: noreply@myhost.com
From: "noreply@myhost.com"
Message-ID:
X-Priority: 3
X-Mailer: PHPMailer 5.2.4 (http://code.google.com/a/apache-extras.org/p/phpmailer/)
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/html; charset=UTF-8

我的标题有什么问题? 仅供参考,标头由 PHPMailer 生成。 我用来发送的代码是:

$mail = new PHPMailer();
$mail->IsMail();
$mail->From = $from;
$mail->FromName = $from;
$mail->AddAddress($to);
$mail->IsHTML(true);
$mail->CharSet = 'UTF-8';
$mail->Subject = $subject;
$mail->Body = $message;
$mail->Send();

【问题讨论】:

  • 为什么不起作用?错误信息?什么都没寄?帮助我们为您提供帮助。
  • 一切似乎都很好,除了我没有收到电子邮件。这就是奇怪的事情。
  • 你有权限访问邮件服务器和日志吗?`如果邮件被接收,请查看日志

标签: php email html-email phpmailer email-headers


【解决方案1】:

您是否尝试过使用其他标题? 我用

$header = "From: Me@anything.de \n";
$header .= "MIME-Version: 1.0 \n";
$header .= "Content-Type: text/html; charset=iso-8859-1; type=\"text/html\" \n"; 
mail($email,$betreff,$mailbody,$header)

而且效果很好。

【讨论】:

  • 这为我修复了它,使用 XAMPP PHP 来“测试邮件服务器工具”。
【解决方案2】:

您需要一个邮件服务器,而您的开发环境中可能没有。
mail() 和 PHPMailer 只是将您的电子邮件交给邮件服务器,然后由邮件服务器实际发送到它的目的地。

如果您没有可用的邮件服务器,那么无论您的代码多么出色,它都不会做任何事情。检查您可能遗漏的任何返回码或异常(我不确定 PHPMailer 是如何指示出现问题的,mail() 是通过返回码完成的),

我从未真正使用过 PHPMailer,但在我看来,您没有设置外部服务器来中继消息,这意味着 PHPMailer 将默认使用本地机器。

邮件服务器不是你几分钟就能安装和配置的东西,我相信你的本地机器没有。

所以,这就是我认为正在发生的事情:
1)您没有设置外部服务器,PHPMailer默认为本地服务器。
2) 你没有本地邮件服务器,导致 PHPMailer 失败。
3) 你错过/忽略了 $mail->Send() 的返回码/抛出的异常,这应该告诉你出了点问题。

【讨论】:

  • 嗨,正如我在描述中所说的,只是 mail() 没有标头可以正常工作,因为我确实有一个本地邮件服务器。对于 Send() 函数的返回码:它不会显示错误。
猜你喜欢
  • 1970-01-01
  • 2011-01-02
  • 1970-01-01
  • 1970-01-01
  • 2013-04-26
  • 2017-12-14
  • 2017-04-30
  • 2011-08-03
  • 2011-05-12
相关资源
最近更新 更多