phpmailer отправляет электронное письмо с добавленной строкой темы дважды - PullRequest
0 голосов
/ 07 мая 2010

Существует странная ошибка в очень простой реализации phpmailer, в которой строка темы добавляется дважды, в код добавляется только один раз:

$mailer->Subject = "My Subject";
$mailer->Send();

Вывод таков, что он получает почту, но с темой, которую дважды видели в почтовом клиенте. Это очень странно, и это не было установлено ранее в коде.

Кто-нибудь видел эту ошибку и нашел ее решение?

Ответы [ 5 ]

2 голосов
/ 11 марта 2011

Я знаю, что это старый, но я нашел решение:

phpmailer добавляет $ subject и получателей в заголовки $ в функции create_header, но при использовании метода отправки по умолчанию - php mail - он добавляет их снова. mail ($ to, $ this-> Subject, $ body, $ header)

Чтобы это исправить, просто закомментируйте эти строки в функции create_header phpmailer.

//$header[] = $this->addr_append("To", $this->to);

//$header[] = sprintf("Subject: %s\n", trim($this->Subject));
2 голосов
/ 02 июля 2010

Я решил проблему.Есть свойство с именем SingleTo, оно должно быть установлено в true.http://phpmailer.worxware.com/index.php?pg=properties

$ mail-> SingleTo = true;

и все должно работать нормально.

0 голосов
/ 06 февраля 2018

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 для отправки почты типично для примеров кода

0 голосов
/ 07 мая 2010

Свойство PHPMailer -> $ Subject является просто переменной.Присвоение нового значения не добавит его к предыдущему, оно перезапишет и заменит любую предыдущую тему.Если вы не используете что-то вроде:

$mail->Subject .= 'extra subject bits';
or
$mail->Subject = $mail->Subject . 'extra subject bits';

, тогда вам придется искать в другом месте, чтобы найти причину.Возможно, в конфигурации вашего почтового сервера есть ошибка, или вы подклассифицировали PHPMailer, и ваш суперкласс делает что-то необычное.

Вы можете проверить, является ли это проблемой сервера получателя, отправив одно и то же письмо на несколько обработанных учетных записейразными серверами.-> AddBCC, -> AddCC и -> AddAddress несколько раз позаботятся об этом.Просто убедитесь, что адреса обрабатываются разными серверами.

0 голосов
/ 07 мая 2010

Вы пробовали просматривать электронную почту в нескольких клиентах? Похоже, что либо ваша тема включена в заголовок, либо ваш почтовый клиент по какой-то причине может показывать ее дважды. Возможно, в качестве заголовка для письма?

Лично я никогда не видел и не слышал об этой ошибке.

...