我想通过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();
答案 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)
它工作正常。