2009-11-20 32 views
30

Tôi không biết cách định dạng dữ liệu cho hàm AddAddress PHPMailer; Tôi cần email được gửi tới nhiều người nhận vì vậy tôi đã thửPHPMailer AddAddress()

$to = "[email protected],[email protected],[email protected]"; 
$obj->AddAddress($to); 

nhưng không thành công. Bất kỳ trợ giúp sẽ được đánh giá cao.

+0

PHPMailer bây giờ có thể (tháng 5 năm 2015) xử lý các loại chuỗi địa chỉ thông qua một chức năng phân tích cú pháp. Xem [câu trả lời này] (http://stackoverflow.com/a/30377848/333340) – Synchro

Trả lời

58

Bạn cần gọi hàm AddAddress một lần cho mỗi địa chỉ E-Mail bạn muốn gửi tới. Chỉ có hai đối số cho hàm này: recipient_email_addressrecipient_name. Tên người nhận là tùy chọn và sẽ không được sử dụng nếu không có mặt.

$mailer->AddAddress('[email protected]', 'First Name'); 
$mailer->AddAddress('[email protected]', 'Second Name'); 
$mailer->AddAddress('[email protected]', 'Third Name'); 

Bạn có thể sử dụng mảng để lưu người nhận và sau đó sử dụng vòng lặp for. Tôi hy vọng nó sẽ giúp.

+1

Mặc dù sau khi 'AddAddress()' đầu tiên sẽ có ý nghĩa hơn khi thêm những người khác với 'AddCC()'. – doub1ejack

+4

Không, điều đó không giống nhau. – edditor

+1

Tôi nghĩ phiên bản mới của nó là $ mailer-> addAddress ('[email protected] ',' Name '); –

2
foreach ($all_address as $aa) { 
    $mail->AddAddress($aa); 
} 
+0

giả định rằng $ all_address là mảng – popas

9

Bạn cần gọi phương thức AddAddress một lần cho mỗi người nhận. Giống như vậy:

$mail->AddAddress('[email protected]', 'Person One'); 
$mail->AddAddress('[email protected]', 'Person Two'); 
// .. 

Để dễ dàng, bạn nên lặp lại một mảng để thực hiện việc này.

$recipients = array(
    '[email protected]' => 'Person One', 
    '[email protected]' => 'Person Two', 
    // .. 
); 
foreach($recipients as $email => $name) 
{ 
    $mail->AddAddress($email, $name); 
} 

Tốt hơn, hãy thêm chúng dưới dạng người nhận bản sao Carbon.

$mail->AddCC('[email protected]', 'Person One'); 
$mail->AddCC('[email protected]', 'Person Two'); 
// .. 

Để dễ dàng, bạn nên lặp lại một mảng để thực hiện việc này.

$recipients = array(
    '[email protected]' => 'Person One', 
    '[email protected]' => 'Person Two', 
    // .. 
); 
foreach($recipients as $email => $name) 
{ 
    $mail->AddCC($email, $name); 
} 
+1

Có thể nói, các phiên bản dễ dàng của bạn trông không cần thiết lâu hơn. – Marcel

+0

Đây là bản sao câu trả lời của Alan Orozco tại đây: http://stackoverflow.com/questions/3149452/php-mailer-multiple-address – redburn

3

Một số câu trả lời tuyệt vời trên, sử dụng những thông tin ở đây là những gì tôi đã làm ngày hôm nay để giải quyết cùng một vấn đề:

$to_array = explode(',', $to); 
foreach($to_array as $address) 
{ 
    $mail->addAddress($address, 'Web Enquiry'); 
} 
0

Tất cả các câu trả lời là rất lớn. Dưới đây là một trường hợp ví dụ sử dụng cho nhiều địa chỉ add: Khả năng thêm bao nhiêu email mà bạn muốn theo yêu cầu với một mẫu web:

See it in action with jsfiddle here (ngoại trừ bộ vi xử lý php)

### Send unlimited email with a web form 
# Form for continuously adding e-mails: 
<button type="button" onclick="emailNext();">Click to Add Another Email.</button> 
<div id="addEmail"></div> 
<button type="submit">Send All Emails</button> 
# Script function: 
<script> 
function emailNext() { 
    var nextEmail, inside_where; 
    nextEmail = document.createElement('input'); 
    nextEmail.type = 'text'; 
    nextEmail.name = 'emails[]'; 
    nextEmail.className = 'class_for_styling'; 
    nextEmail.style.display = 'block'; 
    nextEmail.placeholder = 'Enter E-mail Here'; 
    inside_where = document.getElementById('addEmail'); 
    inside_where.appendChild(nextEmail); 
    return false; 
} 
</script> 
# PHP Data Processor: 
<?php 
// ... 
// Add the rest of your $mailer here... 
if ($_POST[emails]){ 
    foreach ($_POST[emails] AS $postEmail){ 
     if ($postEmail){$mailer->AddAddress($postEmail);} 
    } 
} 
?> 

Vì vậy, những gì nó về cơ bản là tạo ra một hộp văn bản đầu vào mới trên mỗi nhấp chuột với tên "email []".

Biểu tượng [] được thêm vào cuối sẽ biến thành mảng khi được đăng.

Sau đó chúng tôi đi qua từng phần tử của mảng với "foreach" trên PHP phụ thêm:

$mailer->AddAddress($postEmail); 
Các vấn đề liên quan