2012-10-03 22 views
24

Mam trochę kodu PHP, którego używam do wysyłania formularza na określony adres e-mail. Chciałbym jednak dołączyć kilka dodatkowych adresów e-mail w PHP, kiedy go wyśle. Jak mogę to zrobić?Formularz PHP Wyślij e-mail do wielu odbiorców

<?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 
?>​ 

Dziękuję.

+0

Zastosowanie http://codepad.viper-7.com dla kodu php. – Leri

+1

@PLB - Funkcje kodu StackOverflow są do tego idealne. Nie ma powodu, aby korzystać z zewnętrznej strony. – Buggabill

+0

Czy próbowałeś szukać przed pytaniem? http://stackoverflow.com/search?q=php+multiple+email+addresses+ – Buggabill

Odpowiedz

66

to będzie działać:

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

Inne odpowiedzi Zobaczyłem, jak umieszczam spację między wiadomościami e-mail po przecinku. To jedyny, który widziałem bez niego. Myślę, że to jest lepsze? Czy istnieją różnice między tymi dwoma sposobami? – Jon

+0

jak ukryć inne wiadomości e-mail w nagłówku.it pokaże wszystkie adresy e-mail na adres e-mail odbiorcy – smehsoud

+0

@smehsoud to jest inne pytanie, ale możesz po prostu dodać wiersz BCC do nagłówka. –

8

Jeśli trzeba dodać maile jako CC lub BCC, należy dodać podążając za częścią zmiennej, której używasz jako nagłówka:

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

Pozdrowienia

+1

Aby uzyskać optymalną kompatybilność między platformami, możesz użyć PHP_EOL zamiast \ r \ n. –

+0

Zmieniłem '\ r \ n' przez' PHP_EOL', tak jak Evan Donovan naprawdę zauważył. – MTranchant

4

można dodać do $email_to zmiennej jezykiem odbiorców oddzielając je przecinkiem (,). Możesz też dodać nowe pola do nagłówków, a mianowicie CC: lub BCC: i umieścić tam swoich odbiorców. BCC jest najbardziej zalecany

7

Użyj wartości rozdzielonych przecinkami, jak poniżej.

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

lub uruchomić foreach na adres e-mail

//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); 
Powiązane problemy