-1

我已经尝试使用此代码向 TABLE (student) 中的所有学生发送电子邮件通知,当然学生的电子邮件已经存储在数据库中,所以当我尝试此代码时,它只会向一个学生发送电子邮件(第一个在桌子 ) !我已经使用“测试邮件服务器工具”来检查邮件是否发送,正如我所说的它只发送邮件给一个学生,我怎样才能将它发送给表中的所有学生(学生)?

 include("connect.php");


     $Load=$_SESSION['login_user'];  
         $smail= "Select Email from admin WHERE ID=$Load ";
     $email= mysql_query($smail);  

    $result3 = mysql_query("Select email from student") or die(mysql_error());
    $row3 =mysql_fetch_array($result3);
    $mail =$row3['email'];
    $to = $mail;
        $subject = "SPMS";
        $message = "You have a new Schedule" ;
    $headers = "From: $email";
        $sent = @mail($to, $subject, $message, $headers) ;
        if($sent) {print "Your Email Notifications send successfully"; } 
        else {print "We encountered an error sending your mail"; } 
4

3 回答 3

3

您需要像这样遍历结果集,

$subject = "SPMS";
$message = "You have a new Schedule" ;
while( $row3 = mysql_fetch_array($result3)) {
 $mail =$row3['email'];
 $to = $mail;     
 $headers = "From: $email";
 $sent = @mail($to, $subject, $message, $headers) ;
 if($sent) { print "Your Email Notifications send successfully"; } 
 else {print "We encountered an error sending your mail"; } 
}

这是供您参考的手册。

注意:不推荐使用 Mysql_* 扩展。如果可能,请使用 Mysqli 或 PDO。

于 2012-12-03T14:55:35.867 回答
1

根据PHP手册,应该可以在“to”参数上以逗号分隔多个收件人,因此使用您的代码,$to = implode(', ', $mail)

您可以使用密件抄送标头发送给多个收件人,而不是透露他们的所有地址。

此外,您可能希望检查PHPMailer以简化您站点中电子邮件任务的开发。

于 2012-12-03T15:03:35.740 回答
0

我会遍历多个电子邮件地址,然后为每个电子邮件地址发送一封邮件。

<?php

    $addresses = array("mail@example.com", "mail2@example.com", "mail3@example.com");

    foreach ( $addresses as $index => $address )
    {
        // send email to $address.
    }

 ?>

当然,这不是您的实际代码,但逻辑应该足够清晰。

于 2012-12-03T14:59:34.750 回答