2012-05-05 134 views
0

我做了一个不发送任何电子邮件的小代码。它给了我一个空白页面。有什么建议么?如何使用PHP的邮件()函数发送电子邮件

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

这里我觉得你的问题不止一个。 首先你必须连接到数据库。如在答案1中,阅读php手册中的mysql接口,特别是函数mysql_connect。其次,这个时间其实是错误的。 虽然(x = any_function)不会将any_function结果赋值给变量'x'。 'x = any_function'返回一个布尔值,没有别的。 ((x = any_function()))或者在你的情况下: while(($ row1 = mysql_fetch_array($ result1))) 其中'$ row1 = mysql_fetch_array($ result1)'属性到mysql_fecth_array返回的$ rows1值和 '($ row1 = mysql_fetch_array($ result1))'返回一个布尔值来控制while构造。 我希望我已经帮助你。