2012-10-03 55 views
24

Tôi có một số mã PHP mà tôi đang sử dụng để gửi biểu mẫu tới một địa chỉ email cụ thể. Tuy nhiên, tôi muốn bao gồm một vài địa chỉ email khác trong PHP khi nó gửi nó. Làm thế nào tôi có thể làm điều đó?Biểu mẫu PHP gửi email tới nhiều người nhận

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

Cảm ơn bạn.

+0

Sử dụng http://codepad.viper-7.com cho mã php. – Leri

+1

@PLB - Các tính năng mã của StackOverflow là hoàn hảo cho việc này. Không có lý do gì để sử dụng một trang web bên ngoài. – Buggabill

+0

Bạn đã thử tìm kiếm trước khi yêu cầu chưa? http://stackoverflow.com/search?q=php+multiple+email+addresses+ – Buggabill

Trả lời

66

này sẽ làm việc:

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

Câu trả lời khác tôi đã thấy đặt một khoảng trắng giữa các email sau dấu phẩy. Đây là người duy nhất tôi đã thấy mà không có. Tôi hình dung điều này tốt hơn? Có sự khác biệt giữa 2 cách? – Jon

+0

cách ẩn các email khác trong header.it sẽ hiển thị tất cả địa chỉ email để nhận địa chỉ email – smehsoud

+0

@smehsoud đây là một câu hỏi khác nhưng bạn chỉ cần thêm dòng BCC vào tiêu đề. –

8

Nếu bạn cần thêm email như CC hoặc BCC, thêm phần sau trong biến mà bạn sử dụng làm tiêu đề của mình:

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

Trân

+1

Để có khả năng tương thích đa nền tảng tối ưu, bạn có thể sử dụng PHP_EOL thay vì \ r \ n. –

+0

Tôi đã thay đổi '\ r \ n' bằng' PHP_EOL' thành Evan Donovan. – MTranchant

4

Bạn có thể thêm receipients của bạn để $email_to biến tách chúng bằng dấu phẩy (,). Hoặc bạn có thể thêm các trường mới vào tiêu đề, cụ thể là CC: hoặc BCC: và đặt người nhận của bạn ở đó. BCC được khuyên dùng nhiều nhất

7

Sử dụng giá trị được phân tách bằng dấu phẩy như dưới đây.

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

hoặc chạy một foreach cho địa chỉ email

//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); 
Các vấn đề liên quan