2012-10-03 166 views
24

我有一些PHP代碼,我正在使用將表格發送到特定的電子郵件地址。不過,我希望在PHP中包含更多的電子郵件地址以用於發送它。我怎樣才能做到這一點?PHP表單發送電子郵件給多個收件人

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

謝謝。

+0

使用http://codepad.viper-7.com的PHP代碼一個foreach。 – Leri

+1

@PLB - StackOverflow的代碼特性非常適合這一點。沒有理由使用外部網站。 – Buggabill

+0

您在詢問之前是否嘗試過搜索? http://stackoverflow.com/search?q=php+multiple+email+addresses+ – Buggabill

回答

66
+0

我看到的其他答案在逗號之後的電子郵件之間留出空格。這是我沒有見過的唯一一個。我覺得這樣比較好?這兩種方式有差異嗎? – Jon

+0

如何隱藏header.it中的其他電子郵件將顯示所有的電子郵件地址到接收者的電子郵件地址 – smehsoud

+0

@smehsoud這是一個不同的問題,但你可以簡單地添加一個BCC線到頭。 –

8

如果您需要添加電子郵件作爲CC或BCC,添加以下部分用於您的標題變量:

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

問候

+1

爲了獲得最佳的跨平臺兼容性,您可能希望使用PHP_EOL而不是\ r \ n。 –

+0

Evan Donovan真正注意到我已經用'PHP_EOL'改變了'\ r \ n'。 – MTranchant

4

您可以receipients添加到$email_to變量用逗號(,)將它們分開。或者您可以在標題中添加新字段,即CC:BCC:,並將您的收件人放在那裏。最推薦使用BCC

7

使用逗號分隔值如下。

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

或運行郵件地址

//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); 
相關問題