phpmailerの非常に基本的な実装には、件名が2回追加され、コードに1回だけ追加されるという奇妙なエラーがあります。
$mailer->Subject = "My Subject";
$mailer->Send();
出力は、メールを受信しますが、件名が電子メールクライアントで2回表示されることです。その非常に奇妙な、そしてそれはコードの前半で設定されていません。
誰かがこのエラーを見て、それに対する修正を見つけましたか?
私は問題を解決しました。SingleToというプロパティがあり、trueに設定する必要があります。 http://phpmailer.worxware.com/index.php?pg=properties
$ mail-> SingleTo = true;
正常に動作するはずです。
私はこれが古いことを知っていますが、解決策を見つけました:
phpmailerは、create_header関数の$headersに$subjectとrecipientsを追加しますが、デフォルトの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回表示している可能性があります。おそらくメールのヘッダーとして?
個人的には、この種のバグを見たり聞いたりしたことはありません。
PHPMailerの->$Subjectプロパティは単なる変数です。新しい値を割り当てても、前の値に追加されることはなく、前の件名が上書きされて置き換えられます。次のようなものを使用している場合を除きます。
$mail->Subject .= 'extra subject bits';
or
$mail->Subject = $mail->Subject . 'extra subject bits';
次に、原因を見つけるために他の場所を探す必要があります。メールサーバーの構成にバグがあるか、PHPMailerをサブクラス化していて、スーパークラスが何かファンキーなことをしている可能性があります。
異なるサーバーで処理されている複数のアカウントに同じメールを送信することで、受信サーバーの問題であるかどうかを確認できます。-> AddBCC、-> AddCC、および->AddAddressが複数回処理されます。アドレスが異なるサーバーによって処理されていることを確認してください。
PHPMailer6.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を使用してメールを送信しますが、これは典型的なコードサンプルです。