2011-09-12 14 views
23

私はこのコードを持っている:私は複数のアドレスを持っている( "Eメール")私のテーブルではPHPメール:複数の受信者ですか?

<?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); 
?> 

を。 (これらはカンマ区切りではありません) どのようにそれらのアドレスにメッセージを送信できますか?

答えて

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

mail() manual pageに指定されているように、機能の「へ」のパラメータは、アドレスのカンマ区切りのリストを取ることができます。

+1

@Amberにはメールアドレスの制限がありますか?ありがとう – mgraph

+2

@mgraphわかりません。しかし、RFC 2822では、 "各行は998文字以下でなければならず、CRLFを除いて78文字以内でなければならない(SHOULD)"と言われている)。 http://www.faqs.org/rfcs/rfc2822.html – JeromeJ

6

カンマで区切ってください。

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

... 

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

あなたのライン3は、$ to [] = $ row ['address']と書くこともできます。ずっと少ない文字で。 :) –

0

あなたが提示したコードをテストした直後に、この方法(複数のアドレスから 'フィールド'まで)を使用することを知る必要があるため、その電子メールのすべての人がすべてのデスティネーションを見ることができます。

また、Bccを使用している場合は、リスト内の最初の人物も知ることができます。

注意してください! :)

関連する問題