2012-05-05 9 views
0

電子メールを送信しない小さなコードを作成しました。それは私に空白のページを与えます。助言がありますか?PHPのmail()関数を使用して電子メールを送信する方法

<?php 
$result_array1 = array(); 
$result_array2 = array(); 
$result_array3 = array(); 
$result_array4 = array(); 
$sql1 = "SELECT * FROM `test_thing`"; 
$result1 = mysql_query("$sql1") or die($sql1.mysql_error()); 
while($row1 = mysql_fetch_array($result1)) 
{ 
    $result_array1[] = $row1['email']; 
    $result_array2[] = $subject; 
    $result_array3[] = $message; 
    $result_array4[] = $header; 
} 
$sentmail = mail($result_array1,$result_array2,$result_array3,$result_array4); 
?> 

答えて

7
It gives me a blank page. 

実際には必要があります。表示されたコードでは出力関数を使用しません。エラーメッセージが表示される場合は、display_errorsを有効にしてください。error_reportingE_ALL

4

Mailは、文字列を引数にとり、配列として渡しません。あなたはforループを実行し、そのインデックスのために各配列のメールを呼び出す必要があります。

1
while($row1 = mysql_fetch_array($result1)) 
{ 
    $result_array1[] = $row1['email']; 
    $result_array2[] = $subject; 
    $result_array3[] = $message; 
    $result_array4[] = $header; 
} 

私はあなたが意味を期待:

while($row1 = mysql_fetch_array($result1)) 
{ 
    $result_array1 = $row1['email']; 
    $result_array2 = $subject; 
    $result_array3 = $message; 
    $result_array4 = $header; 
} 

mail()は、文字列を期待しています。ループして複数のメールを送信することを意味する場合を除き、コードを少し再設計する必要があります。

+0

ループして複数のメールを送信する意味があるので、少しコードを再設計する方法を教えてください。 ありがとうございます – TheBig

1

これが完全なコードの場合、データベースは正しく初期化されていません。詳細および例については、mysql_connect()のドキュメントを参照してください。

また、一部のデバッグデータをエコーアウトして、実際にデータベースからデータを取得していることを確認してください。

+0

私のフルコードは約500行です。これはほんの一部です。 – TheBig

0

<?php 
    $result_array1 = array(); 
    $result_array2 = array(); 
    $result_array3 = array(); 
    $result_array4 = array(); 
    $sql1 = "SELECT * FROM `test_thing`"; 
    $result1 = mysql_query("$sql1") or die($sql1.mysql_error()); 
    while($row1 = mysql_fetch_array($result1)) 
    { 
    $sentmail = mail($row1['email'],$subject,$message,$header); 
    } 
?> 
+0

これはユーザーが無制限のメールを受信するためです – TheBig

0

をしないのはなぜ私はここであなたに複数の問題を考えます。 まず、データベースに接続する必要があります。 Answer 1のように、mysqlインタフェースのphpマニュアル、特にmysql_connectを読んでください。 第2に、whileは実際には間違っています。 (x = any_function)はany_function結果を変数 'x'に帰属させません。 'x = any_function'はブール値を返します。 while((x = any_function()))またはケースでは while($ row1 = mysql_fetch_array($ result1))) ここで '$ row1 = mysql_fetch_array($ result1)'の属性は次のようになります。 mysql_fecth_arrayと '($ row1 = mysql_fetch_array($ result1))によって返される$ rows1の値は、while構文を制御するためのブール値を返します。 私はあなたを助けてくれることを願っています。

関連する問題