PHP坏邮件标题

时间:2013-07-02 13:08:42

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

我想通过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();

2 个答案:

答案 0 :(得分:0)

您需要一个您的开发环境中可能没有的邮件服务器 mail()和PHPMailer只需将您的电子邮件移交给邮件服务器,邮件服务器就会将其实际发送到目的地。

如果您没有可用的邮件服务器,无论您的代码有多好,它都不会做任何事情。检查您可能遗漏的任何返回代码或异常(我不确定PHPMailer如何表明出错,mail()通过返回代码执行),

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

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

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

答案 1 :(得分:0)

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

$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)

它工作正常。