2011-09-12 11 views
23

Ho questo codice:Posta PHP: destinatari multipli?

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

Nel mio tavolo ("email") Ho più indirizzi. (Non sono virgola sepparated.) Come potrei inviare il mio messaggio a tutti quegli indirizzi?

risposta

36
while($row = mysql_fetch_array($result)) 
{ 
    $addresses[] = $row['address']; 
} 
$to = implode(", ", $addresses); 

Come specificato sulla mail() manual page, la "a" parametro della funzione può prendere un elenco separato da virgola di indirizzi.

+1

@Amber c'è un limite di indirizzi email? grazie – mgraph

+2

@ mgraph non sono sicuro. Tuttavia, nella RFC 2822 è detto che "Ogni riga di caratteri DEVE essere non più di 998 caratteri e DOVREBBE non essere più di 78 caratteri, escluso il CRLF.". http://www.faqs.org/rfcs/rfc2822.html – JeromeJ

6

Separare gli indirizzi con virgole.

$to=array(); 
while($row = mysql_fetch_array($result)) { 
    array_push($to, $row['address']); 
} 

... 

mail(implode(',', $to), $submit, $message, $headers); 
+5

la tua riga 3 potrebbe anche essere scritta come $ a [] = $ riga ['indirizzo']; con molti meno caratteri. :) –

0

Ho appena testato i codici che hai presentato e prima di utilizzarli, le persone devono sapere che usando questo modo (più indirizzi nel campo "a"), ogni singola persona in quell'email può vedere tutti i destinatari.

Inoltre, se si sta utilizzando Bcc, conosceranno anche la prima persona nell'elenco.

Attenzione! :)

Problemi correlati