PHP PHPMailerで宛先の名前が、undisclosed-recipientsになってしまう。

更新:2018.1.30

目次

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');

違うメールアドレスにするか、設定するのをやめるか・・・

PHP関連記事








これからブログなどのサイトを作りたいと思っている人は、お名前.comでのドメイン取得がオススメです。

■□━━ 急げ、ドメインは早い者勝ち! ━━□■
     ■お名前.com

アマゾンの2019年本屋大賞一覧

そして、バトンは渡された
ひと
ベルリンは晴れているか
熱帯
ある男

楽天市場のおすすめ商品一覧

お金2.0 新しい経済のルールと生き方 [ 佐藤航陽 ]
全部レンチン!やせるおかず 作りおき 時短、手間なし、失敗なし
「読む力」と「地頭力」がいっきに身につく 東大読書 [ 西岡 壱誠 ]