可以说,我在mysql数据库中有1000个订阅用户。如果我想向所有用户发送电子邮件,我该怎么办?
编辑:
什么是(每个人都在谈论)cron工作?可举个例子吗?
答案 0 :(得分:5)
我建议创建一个包含所有需要发送的电子邮件的数据库表。这可以相当快速地完成。从那里,设置一个cron作业,排在第一行,通过电子邮件发送,然后删除行。通过这种方式,您可以并行处理杂项,用户无需等待在响应页面加载之前发送电子邮件。
答案 1 :(得分:2)
使用for循环和邮件功能的组合,例如:
$rs = mysql_query('SELECT email from emailList LIMIT 0, 10');
while(list($email) = mysql_fetch_row($rs))
{
// Send Email
mail($email, 'Your Subject', 'Your Message');
}
但正如大家所说,不要一次性运行它。我严重怀疑任何服务器都会处理1000个电子邮件请求的负担。运行一个运行的cron作业,以便在每次运行时检索代码,然后发送30 - 50封电子邮件并将其发送出去。
答案 2 :(得分:1)
最好的方法是用您选择的语言编写一个cron作业,当服务器通常处于最平稳状态时执行该任务。如果要使用PHP,仍然使用cron作业。在回复页面请求WTF-style时不要这样做。
答案 3 :(得分:1)
我建议做其他人说过的事情,创建一个包含邮件,主题和电子邮件地址的单独数据库表。我还会使用PHPMailer(http://phpmailer.codeworxtech.com/)通过SMTP发送电子邮件。
答案 4 :(得分:1)
从创建代码中分离邮件发送代码(如stefan mai建议的那样)。将所有地址/主题/主体写入表中,然后处理该表。
然后,每隔x分钟运行一次cron-job,只发送y邮件。如果您一次发送过多邮件,您可能会比您想象的更快地被标记为垃圾邮件发送者。仅在发送成功时才从表中删除邮件任务。
使用phpmailer或swiftmailer等库。
答案 5 :(得分:1)
您也可以尝试使用PHP List。
安装PHP列表,导出您的电子邮件地址数据库并将其作为CSV导入PHP列表。然后,您不必担心管理用户等,并且您可以获得点击跟踪。
答案 6 :(得分:0)
您可以首先设置查询以获取每个用户的每封电子邮件,具体内容如下:
SELECT email FROM users;
存储在变量中后,您可以使用foreach()和mail()的组合向每个用户发送电子邮件。
答案 7 :(得分:0)
我会创建一个包含所有用户和电子邮件以及状态的表格。设置2或3个Cronjobs来处理此表。
在你的php脚本中,fetch 30来自db(限制30)并使用foreach循环处理它们。每次运行后更改“email”的状态或从db中删除条目。
通过这种方式,您可以确保您的服务器能够处理系统负载。
答案 8 :(得分:0)
每封电子邮件是否应该对每个用户都是唯一的?如果没有,请不要为每个用户发送新邮件,将BCC(盲目抄送)添加到单个邮件中。这将使您的smtp服务器满意。
答案 9 :(得分:0)
编写一个PHP脚本,以您希望的方式处理发送邮件(Stefan Mai的答案是一个很好的方法)。设计脚本以便它记录它的工作,并且在它运行时不打印任何东西(这使你有办法在以后找到错误)。假设你正在运行Linux,你可以设置cron在指定的时间运行脚本。
通过在终端会话中键入crontab -e
来编辑您的cron作业。然后你输入这样的东西(这将在每晚午夜运行工作)。
0 * * * * wget -O - -q -t 1 http://www.example.com/mymailer.php
答案 10 :(得分:-1)
您的问题很简单如何在php中向所有用户发送电子邮件? 这是简单的回复
<块引用>块引用
<?php
echo "In Send mail file...</br></br>";
include 'database.php';
$sql = "SELECT * FROM users ";
$get = mysqli_query($db,$sql);
echo "Database selected email will start now....</br>";
$c = 1;
while($row = mysqli_fetch_array($get))
{
echo "sending ".$c."</br>";
$c =$c+1;
$to = $row['email'];
$subject = 'thank you..';
$headers = "From: example@gmail.com";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$headers .= "CC: example@gmail.com\r\n";
$message = '<html><body>';
$message .= '<img src="example." />';
$message .= '<table rules="all" style="border-color: #666;" cellpadding="10">';
$message .= "<tr style='background: #eee;'><td><strong>UserName:</strong> </td><td>" . $row['username']. "</td></tr>";
$message .= "<tr style='background: #eee;'><td><strong>Password:</strong> </td><td>***</td></tr>";
$message .= "<tr><td><strong>Email:</strong> </td><td>" .$row['email']. "</td></tr>";
$message .= "<tr><td><strong>Registeration</strong> </td><td>Success</td></tr>";
$message .= "<strong>We want to thank you for your time while waiting with us during, Remember we were once known lot more...</strong> ";
$message .= "</table>";
$message .= "</body></html>";
if ( mail($to, $subject, $message, $headers)) {
echo("Email successfully sent to $to...");
} else {
echo("Email sending failed...</br>");
}
}
?>