1

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();
4

2 回答 2

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)

它工作正常。

于 2013-07-03T07:35:40.957 回答
0

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

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

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

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

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

于 2013-07-02T13:44:34.247 回答