2010-12-22 36 views
30

¿Qué código debería hacer cambiar en este script PHP para enviar un correo electrónico a más de 20 direcciones de correo electrónico?PHP enviar correo a varias direcciones de correo electrónico

<?php 

$email_to = "[email protected]"; // your email address 
$email_subject = "Contact Form Message"; // email subject line 
$thankyou = "thankyou.htm"; // thank you page 

?> 

Por favor, déjame un ejemplo. Gracias.

+28

Es desafortunado que nadie lee el manual más. –

+7

Stackoverflow es el manual –

Respuesta

21

Su

$email_to = "[email protected], [email protected], [email protected]" 

necesita ser una lista delimitada por comas de adrresses correo electrónico.

mail($email_to, $email_subject, $thankyou); 
+1

¿por qué pones un espacio después de la coma? y no .com, dirección por ejemplo? – Jon

+1

@Jon - legibilidad Estoy adivinando – w69rdy

1

En función de correo electrónico se puede ya que muchos reciepient como desee en $ emailto parámetro de separados por comas.

2

La mejor manera podría ser guardar todos los correos electrónicos en una base de datos.

Puede probar este código, suponiendo que tiene su correo electrónico en una base de datos

/*Your connection to your database comes here*/ 
$query="select email from yourtable"; 
$result =mysql_query($query); 

/el código anterior depende de donde guardó sus direcciones de correo electrónico, así que asegúrese de que se sustituya por sus parámetros/

entonces puede presentar una coma cadena separada del resultado,

while($row=$result->fetch_array()){ 
     if($rows=='') //this prevents from inserting comma on before the first element 
     $rows.=$row['email']; 
     else 
     $rows.=','.$row['email']; 
    } 

Ahora puede utilizar

$to = explode(',',$rows); // to change to array 

$string =implode(',',$cc); //to get back the string separated by comma 

Con el código anterior se puede enviar el correo electrónico como este

mail($string, "Test", "Hi, Happy X-Mas and New Year"); 
+0

¿por qué no jsut poner los correos electrónicos fecthed directamente en una matriz y luego 'implosionar' justo antes de llamar a' mail'? – prodigitalson

+0

Sí, eso es correcto. Estoy haciendo lo mismo dos veces para mostrar lo que está pasando con in explosion() – tkt986

45

Fore bien la legibilidad del código utilizar una matriz y una implosión en una cadena separada por comas: -

$recipients = array(
    "[email protected]", 
    // more emails 
); 
$email_to = implode(',', $recipients); // your email address 
$email_subject = "Contact Form Message"; // email subject line 
$thankyou = "thankyou.htm"; // thank you page 
+0

Por favor, nunca lo haga así, si los destinatarios no se conocen (o no deberían). De esta forma, cada dirección queda expuesta a cada destinatario. –

7

El siguiente código hará la tarea ...

<?php 

$contacts = array(
"[email protected]", 
"[email protected]", 
//....as many email address as you need 
); 

foreach($contacts as $contact) { 

$to  = $contact; 
$subject = 'the subject'; 
$message = 'hello'; 
mail($to, $subject, $message, $headers); 

} 

?> 
0

Creo que el siguiente código funcionará.

$tos = array('[email protected]', '[email protected]'); 
foreach ($tos as $to){ 
    $ok = mail ($to, $subject, $body, $from); 
} 
if ($ok) { 
    echo "Message Send"; 
} else { 
    echo "Error"; 
} 
+2

Vale la pena señalar que este ejemplo envía muchas copias del mismo correo electrónico ... en lugar del mismo correo electrónico para muchos destinatarios. – counterbeing

+1

De esta forma, solo se verifica el último correo en 'si'. Deberías poner los bloques 'if..else' en el bucle –

-1

enviar mediante programación un formulario enviado a la dirección de correo electrónico múltiple es una cosa posible, sin embargo la mejor práctica de esto es mediante la creación de una lista de correo. En el código, se colocará la dirección de la lista y cualquier cambio o actualización en las direcciones de correo electrónico a la lista de destinatarios se puede hacer sin cambiar el código.

1

Es muy mala práctica enviar todas las direcciones de correo electrónico a todos los destinatarios; deberías usar Bcc (copias ciegas de carbón).

$from = "[email protected]"; 
    $recipList = "mailaddress1,mailaddress2,etc"; 
    $headers = "MIME-Version: 1.0\nContent-type: text/html; charset=utf-8\nFrom: {$from}\nBcc: {$recipList}\nDate: ".date(DATE_RFC2822); 
    mail(null,$subject,$message,$headers); //send the eail 
Cuestiones relacionadas