アフィリエイト広告を利用しています

2021年09月18日

PHPMailerでメール配信:同じ宛先に何度も送信される。

メールの一斉配信を行いたい。

PHPMailerをインストールし、Webでコード例を検索した。



 try {
  $mail->Host = $host; // サーバ名
  $mail->Port = 587;
  $mail->CharSet = "utf-8";
  $mail->Encoding = "base64";
  $mail->setFrom($from); // 送信元メールアドレス
  $mail->addAddress($to);
  $mail->Subject = $subject;
  $mail->Body = $content;
   //メール送信
   $mail->send();
 } catch (Exception $e) {
  echo '失敗: ', $mail->ErrorInfo;
 }



メールを送信できたので、次に上記のコードをforループ内で実行するようにした。

宛先アドレスを都度、変更して、一斉配信を実現するつもり。

不思議な現象


テストデータを3件用意してテストすると不思議な現象が起きた。

1件目のメールアドレスにはメールが3通到着し、

2件目のアドレスには2通、3件目には1通のメールが到着していた。

公差が1の等差数列の和を求めているような感じでメールの配信数が増加している。

原因


ここに問題があった。


  $mail->addAddress($to);


addAddress()はその名のとおり、送信先アドレスを追加していた。

宛先を追加するコマンドなので、ループ内で使用すると送信先は1件づつ増えていく。

addAddress()で宛先を追加する前に、宛先をクリアしてやる必要がある。

clearAddresses() を追加したら解決した。



  $mail->clearAddresses();
  $mail->addAddress($to);









posted by db-engineer at 00:00 | Comment(0) | PHP

この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

検索
最新記事
カテゴリーアーカイブ
プロフィール
db-engineerさんの画像
db-engineer
プロフィール
タグクラウド