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);
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
-
no image