私はこのコードを持っています:
<?php
include("db.php");
$result = mysql_query("SELECT * FROM email");
while($row = mysql_fetch_array($result))
{
$to = $row['address'];
}
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "[email protected]";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
?>
テーブル(「電子メール」)に複数のアドレスがあります。 (これらはコンマ区切りではありません。)どうすればそれらのアドレスすべてにメッセージを送信できますか?
_while($row = mysql_fetch_array($result))
{
$addresses[] = $row['address'];
}
$to = implode(", ", $addresses);
_
mail()
マニュアルページ で指定されているように、関数の「to」パラメータはコンマ区切りのアドレスのリストを取ることができます。
アドレスをコンマで区切ります。
$to=array();
while($row = mysql_fetch_array($result)) {
array_Push($to, $row['address']);
}
...
mail(implode(',', $to), $submit, $message, $headers);
あなたが提示したコードをテストしましたが、使用する前に、この方法(「to」フィールドの複数のアドレス)を使用すると、そのメールのすべての人がすべての宛先を見ることができることを知る必要があります。
また、Bccを使用している場合は、リストの最初の人も知っています。
注意してください! :)
GROUP_CONCAT
を使用して、','
で区切られた結果を返すだけです。
$result = mysql_query("SELECT GROUP_CONCAT(address) FROM email");
上記のAlexの回答によれば、BCCを使用している場合でも、受信者はリストの最初の人を知っています。これに対する解決策は、個々のコピーを各アドレスに1つずつ送信することです。
$emails = ['[email protected]', '[email protected]', '[email protected]'];
foreach ($emails as $email){ // or $result as $row
mail(
$email, // or $row['address']
'Same Subject',
'Same Content',
'From: [email protected]',
'-f [email protected]'
);
}