基于PHP和MYSQL向多个用户发送邮件

时间:2015-03-19 10:51:40

标签: php mysql email mysqli

这是我的表:

id      emails          names       vip     expire
1       1@exp.com       name1       1       2015/03/25 12:10:22
2       2@exp.com       name2       0   
3       3@exp.com       name3       1       2015/03/30 09:12:00
4       4@exp.com       name4       1       2015/05/01 20:10:11
5       5@exp.com       name5       1       2015/03/25 12:10:20
.
.
.

在此代码中:

从仅包含有效帐户的用户的表中调用所有用户。

如果用户帐户已过期,则会停用其帐户并向所有用户发送电子邮件。

但不会向所有用户发送他们的帐户为0或未激活的电子邮件。

活跃= 1 | 不活跃= 0

用户数量为2000万,每天都会添加用户。

我认为应该这样做以循环发送电子邮件。

<?php
$db = mysqli_connect($mysql_server, $mysql_username, $mysql_password);
if (!$db)
{
die('Failed to connect to database server!<br>'.mysqli_error());
}
mysqli_select_db($db, $mysql_database) or die('Failed to select database<br>'.mysqli_error());

   $update = date("Y-m-d H:i:s");

   $sql = "SELECT * FROM ".$mysql_table." WHERE `vip` = '1' AND `expire` <= '".$update."'";
   $result = mysqli_query($db, $sql);
   if ($data = mysqli_fetch_array($result))
   {
        $emails = $data['emails'];
        $names = $data['names'];

        $sql = "UPDATE `".$mysql_table."` SET `vip` = '0' WHERE `vip` = '1' AND `expire` <= '".$update."'";
        mysqli_query($db, $sql);


        $msg = "Hi ".$names.",\nSecond line of text";
        mail($emails, "Expired Account", $msg);
   }
mysqli_close($db);
?>

2 个答案:

答案 0 :(得分:1)

选择后,您需要一段时间才能为每个人发送电子邮件。

代替:

 if ($data = mysqli_fetch_array($result))

试试这个:

while ($data = mysqli_fetch_array($result))

答案 1 :(得分:1)

你可能需要点数:

$count=0
while ....


$count = $count+1;
if ($count <= 70){

  // your code to send emails

在此之后,您需要在一小时后发送一些内容,或许您可以在服务器中配置cron。