PHP PHPMailerで宛先の名前が、undisclosed-recipientsになってしまう。
undisclosed-recipients を出力している個所を探る
PHPMailer.php の中を検索すると下記のような箇所が見つかりました。
if (count($this->to) > 0) {
$this->mailHeader .= $this->addrAppend('To', $this->to);
} else {
$this->mailHeader .= $this->headerLine('To', 'undisclosed-recipients:;');
}
$this->toの中身が0件だったときに、undisclosed-recipientsになるということなので、$this->to の中身を getToAddresses()で見てみると確かに空になっていました。
どうやらこのメールアドレスがなぜか設定されていないのが問題だと思われます。
原因
to と bcc に同じメールアドレスを入れたのがマズかったようです。
仕様なのかバグなのかわかりませんが、Reply-To 以外に同じメールアドレスを登録することはできないようです。
PHPMailer.php の中を読み進めていくと、addAddress(),addCC(),addBCC(),addReplyTo()が内部で、addOrEnqueueAnAddress()を共通的に呼び出していて、$this->RecipientsQueue[]にメールアドレスをキーにして値を格納しているのですが、addReplyTo()以外は、同じメールアドレスを登録できないようです。
私がはまったケースとしては、下記のように同じメールアドレスを先に BCC に入れてしまっていたため、hogehoge が設定されていなかったようです。
$mail->addBCC('xxxxx@example.com');
$mail->AddAddress('xxxxx@example.com','hogehoge');
違うメールアドレスにするか、設定するのをやめるか・・・