J'ai ce code:
<?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);
?>
Dans ma table ("email") j'ai plusieurs adresses. (Ils ne sont pas séparés par des virgules.) Comment pourrais-je envoyer mon message à toutes ces adresses?
while($row = mysql_fetch_array($result))
{
$addresses[] = $row['address'];
}
$to = implode(", ", $addresses);
Comme spécifié sur la page de manuel mail()
, le paramètre "to" de la fonction peut prendre une liste d'adresses séparées par des virgules.
Séparez les adresses par des virgules.
$to=array();
while($row = mysql_fetch_array($result)) {
array_Push($to, $row['address']);
}
...
mail(implode(',', $to), $submit, $message, $headers);
Je viens de tester les codes que vous avez présentés et avant de les utiliser, les gens doivent savoir que de cette façon (plusieurs adresses dans le champ "à"), chaque personne dans cet e-mail peut voir tous les destinataires.
De plus, si vous utilisez Cci, ils connaîtront également la première personne de la liste.
Savoir! :)
Vous avez juste besoin d'utiliser GROUP_CONCAT
pour renvoyer les résultats séparés par ','
$result = mysql_query("SELECT GROUP_CONCAT(address) FROM email");
Selon la réponse d'Alex ci-dessus, les destinataires connaîtront la première personne de la liste même si vous utilisez BCC. Une solution serait d'envoyer des copies individuelles à chaque adresse une par une.
$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]'
);
}