1

我正在尝试将电子邮件发送到从 SQL 中提取的多个地址。我想出了以下脚本,但没有运气。我知道使用mail()orsendmail不是最佳选择,如果有人能指出我哪里出错了,或者使用 phpmailer 有更好的解决方案,那就太好了。

PS:我不想使用 SMTP,因为我们正在使用我们不会监控的地址。Do-NOT-REPLY 一,实际上我们根本没有电子邮件服务。但是服务器确实支持mail/sendmail/phpmailer,都经过测试。

<HTML> 
   <TITLE>Email Notification</TITLE> 
<?php

include "subscribe/mySQL.class.php"; //Connect to SQL 

if ($subject) { 
    $mailaddress = "DO-NOT-REPLY@domain.my";
    $query = "select email from subscribe"; 
    $res = mysql_query($query); 
    $row = mysql_fetch_array($res); 

    while ($row) { 

        mail($row['email'],$subject,$text."n ","From:".$mailaddress); 
        $row = mysql_fetch_array($res);

    } 

    echo "<script type='text/javascript'>"; 
    echo "parent.location.href='welcome.php'"; 
    echo "</script>";} 
?> 
<BODY> 
<P ALIGN=CENTER><FONT FACE="Arial" SIZE="7" COLOR="#FF0000">Send Notifications<BR><BR></FONT> 
<P ALIGN=LEFT><FORM NAME="email" ACTION="test.php" METHOD="POST"> 
<FONT FACE="Arial" SIZE="6" COLOR="#0000FF">Subject:<INPUT TYPE=TEXT NAME="subject" SIZE="50" MAXLENGTH="18" value=<?php echo $subject ?>><BR><BR> 
Content: <TEXTAREA NAME="text" COLS="90" ROWS="3" value="<?php echo $text?>"> </TEXTAREA><BR><BR> 
</FONT> 
<INPUT TYPE=SUBMIT VALUE=Send Email></FORM> 
</BODY> 
</HTML>
4

1 回答 1

0

您什么也看不到,因为您没有打印任何内容来帮助您查看电子邮件是否已发送。

尝试使用: mysql_fetch_assoc() 而不是 mysql_fetch_array() ,看看它是如何为你工作的。

//Sorry, but I am a fan of mysql_fetch_assoc 
//$row = mysql_fetch_array($res); 

while ($row = mysql_fetch_assoc($res)) { //Here is my main change

    if (mail($row['email'],$subject,$text."n ","From:".$mailaddress)) {
       echo '<hr>Message sent to: '.$row['email'].'<br>'; //Just to see that it was sent.
    }

    //$row = mysql_fetch_array($res); //Since I put this in the while test

} 

mail()函数返回一个布尔值,因此测试该值并打印一些内容,以便您可以知道邮件是否已成功发送。

如果这不是问题,请告诉我,这样我可以删除此答案或相应地对其进行编辑。

于 2013-10-04T14:00:45.590 回答