2012-10-03 26 views
24

Tengo un código PHP que estoy usando para enviar un formulario a una dirección de correo electrónico específica. Sin embargo, me gustaría incluir un par de direcciones de correo electrónico en el PHP para cuando lo envíe. ¿Cómo puedo hacer eso?Formulario PHP enviar correo electrónico a varios destinatarios

<?php 
if(isset($_POST['email'])) { 

    // EDIT THE 2 LINES BELOW AS REQUIRED 
    $email_to = "[email protected]"; 
    $email_subject = "MVP Nomination"; 


    function died($error) { 
     // your error code can go here 
     echo "We are very sorry, but there were error(s) found with the form you submitted. "; 
     echo "These errors appear below.<br /><br />"; 
     echo $error."<br /><br />"; 
     echo "Please go back and fix these errors.<br /><br />"; 
     die(); 
    } 

    // validation expected data exists 
    if(!isset($_POST['username']) || 
     !isset($_POST['body'])|| 
     !isset($_POST['email'])) { 
     died('We are sorry, but there appears to be a problem with the form you submitted.');  
    } 

    $username = $_POST['username']; // required 
    $body = $_POST['body']; // required 
    $email_from = $_POST['email'];   // required 

    $error_message = ""; 
    $email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 
    if(!preg_match($email_exp,$email_from)) { 
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />'; 
    } 
    $string_exp = "/^[A-Za-z .'-]+$/"; 
    if(!preg_match($string_exp,$username)) { 
    $error_message .= 'The Username you entered does not appear to be valid.<br />'; 
    } 

    if(strlen($error_message) > 0) { 
    died($error_message); 
    } 
    $email_message = "Form details below.\n\n"; 

    function clean_string($string) { 
     $bad = array("content-type","bcc:","to:","cc:","href"); 
     return str_replace($bad,"",$string); 
    } 

    $email_message .= "Name: ".clean_string($username)."\n"; 
    $email_message .= "Comments: ".clean_string($body)."\n"; 


// create email headers 
$headers = 'From: '.$email_from."\r\n". 
'Reply-To: '.$email_from."\r\n" . 
'X-Mailer: PHP/' . phpversion(); 
@mail($email_to, $email_subject, $email_message, $headers); 
} 
header("Location: ThankYou.html"); //Redirect to Thank You HTML page after email is sent 
?>​ 

Gracias.

+0

Uso http://codepad.viper-7.com para el código PHP. – Leri

+1

@PLB - Las funciones de código de StackOverflow son perfectas para esto. No hay razón para usar un sitio externo. – Buggabill

+0

¿Intentó buscar antes de preguntar? http://stackoverflow.com/search?q=php+multiple+email+addresses+ – Buggabill

Respuesta

66

Esto funcionará:

$email_to = "[email protected],[email protected],[email protected]"; 
+0

Otras respuestas He visto poner un espacio entre los correos electrónicos después de la coma. Este es el único que he visto sin. Me imagino que esto es mejor? ¿Hay diferencias entre las 2 formas? – Jon

+0

cómo ocultar otros correos electrónicos en header.it mostrará todas las direcciones de correo electrónico a la dirección de correo electrónico del receptor – smehsoud

+0

@smehsoud esta es una pregunta diferente, pero simplemente puede agregar una línea BCC al encabezado. –

8

Si es necesario agregar mensajes de correo electrónico como CC o BCC, añadir el siguiente parte en la variable que usa como encabezado:

$headers .= "CC: [email protected]".PHP_EOL; 
$headers .= "BCC: [email protected]".PHP_EOL; 

Saludos

+1

Para una compatibilidad óptima multiplataforma, puede usar PHP_EOL en lugar de \ r \ n. –

+0

He cambiado el '\ r \ n' por' PHP_EOL' como lo notó Evan Donovan. – MTranchant

4

Puede añadir sus receipients a $email_to variables separándolos por comas (,). O bien, puede agregar nuevos campos a los encabezados, es decir, CC: o BCC: y poner allí sus destinatarios. BCC es más recomendado

7

Utilice valores separados por comas de la siguiente manera.

$email_to = 'Mary <[email protected]>, Kelly <[email protected]>'; 
@mail($email_to, $email_subject, $email_message, $headers); 

o ejecutar un foreach dirección de correo electrónico

//list of emails in array format and each one will see their own to email address 
$arrEmail = array('Mary <[email protected]>', 'Kelly <[email protected]>'); 

foreach($arrEmail as $key => $email_to) 
    @mail($email_to, $email_subject, $email_message, $headers); 
Cuestiones relacionadas