在phpmailer的一个非常基本的实现中有一个奇怪的错误,其中主题行自我添加两次,它只在代码中添加了一次:
$mailer->Subject = "My Subject";
$mailer->Send();
输出是它获取邮件,但在电子邮件客户端中看到两次主题行。它非常奇怪,并且在代码中没有早先设置过。
有人看到此错误并找到了修复程序吗?
答案 0 :(得分:2)
我解决了这个问题。有一个名为SingleTo的属性,需要将其设置为true。 http://phpmailer.worxware.com/index.php?pg=properties
$ mail-> SingleTo = true;
它应该可以正常工作。
答案 1 :(得分:2)
我知道这已经过时了,但我找到了解决办法:
phpmailer将$ subject和recipients添加到create_header函数的$ headers中,但是当你使用默认的send方法 - php mail时 - 它会再次添加它们。 mail($ to,$ this-> Subject,$ body,$ header)
要解决这个问题,只需在phpmailer的create_header函数中注释掉这些行。
//$header[] = $this->addr_append("To", $this->to);
//$header[] = sprintf("Subject: %s\n", trim($this->Subject));
答案 2 :(得分:0)
您是否尝试在多个客户端中查看电子邮件?似乎您的主题可能包含在标题中,或者您的电子邮件客户端可能由于某种原因显示它两次。也许作为电子邮件的标题?
就我个人而言,我从未见过或听说过这种性质的虫子。
答案 3 :(得分:0)
PHPMailer's - > $ Subject属性只是一个变量。分配新值不会将其附加到上一个值,它将覆盖并替换任何先前的主题。除非你使用的是:
$mail->Subject .= 'extra subject bits';
or
$mail->Subject = $mail->Subject . 'extra subject bits';
然后你必须到别处寻找原因。也许你的邮件服务器的配置存在一个错误,或者你已经将PHPMailer子类化,而你的超级类正在做一些时髦的事情。
您可以通过向不同服务器处理的多个帐户发送相同的电子邮件来检查接收服务器是否存在问题。 - > AddBCC, - > AddCC和 - > AddAddress将多次处理。只需确保地址由不同的服务器处理。
答案 4 :(得分:0)
PHPMailer 6.0.3也有类似的问题。
电子邮件发送时带有重复的标题条目"主题",导致电子邮件从@ yahoo,@ sky.com和@ rocketmail.com收件人反弹。尽管如此,Hotmail和GMail仍然接受了电子邮件。
在/PHPMailer6/PHPMailer.php中,注释出第2299-2301行修复了问题。
/*if ('mail' != $this->Mailer) {
$result .= $this->headerLine('Subject', $this->encodeHeader($this->secureHeader($this->Subject)));
}*/
在其他地方我使用PHPMailer发送邮件,是典型的代码示例