2011-09-12 32 views
23

tôi có mã này:Thư PHP: Nhiều người nhận?

<?php 
include("db.php"); 

$result = mysql_query("SELECT * FROM email"); 

while($row = mysql_fetch_array($result)) 
{ 
$to = $row['address']; 
} 
$subject = "Test mail"; 
$message = "Hello! This is a simple email message."; 
$from = "[email protected]"; 
$headers = "From:" . $from; 
mail($to,$subject,$message,$headers); 
?> 

Trong bảng của tôi ("email") Tôi có nhiều địa chỉ. (Chúng không phải là dấu phẩy bị tịch thu.) Làm cách nào để gửi thư của tôi tới tất cả các địa chỉ đó?

Trả lời

36
while($row = mysql_fetch_array($result)) 
{ 
    $addresses[] = $row['address']; 
} 
$to = implode(", ", $addresses); 

Theo quy định trên mail() manual page, "để" tham số của hàm có thể mất một danh sách bằng dấu phẩy địa chỉ.

+1

@Amber có giới hạn địa chỉ email không? cảm ơn – mgraph

+2

@mgraph Tôi không chắc chắn. Mặc dù, người ta nói trong RFC 2822 rằng "Mỗi dòng ký tự PHẢI không quá 998 ký tự, và NÊN không được quá 78 ký tự, ngoại trừ CRLF.". http://www.faqs.org/rfcs/rfc2822.html – JeromeJ

6

Phân tách các địa chỉ bằng dấu phẩy.

$to=array(); 
while($row = mysql_fetch_array($result)) { 
    array_push($to, $row['address']); 
} 

... 

mail(implode(',', $to), $submit, $message, $headers); 
+5

dòng 3 của bạn cũng có thể được viết thành $ to [] = $ row ['address']; với ít ký tự hơn. :) –

0

Tôi chỉ thử nghiệm mã bạn đã trình bày và trước khi sử dụng chúng, mọi người cần biết rằng sử dụng theo cách này (nhiều địa chỉ trong trường 'đến'), mọi người trong email đó đều có thể thấy tất cả các destinatars.

Ngoài ra, nếu bạn đang sử dụng Bcc, họ cũng sẽ biết người đầu tiên trong danh sách.

Hãy lưu ý! :)

Các vấn đề liên quan