我目前正在开发一个需要向用户发送电子邮件通知的项目。它的工作方式,用户遵循某些帖子/群组,只要在帖子类别/群组下有新帖子或评论,他们就会收到电子邮件,通过帖子本身的片段通知他们。
我希望每天发送超过5000封电子邮件。使用cron作业来获取用户并定期发送电子邮件是否有效,或者是否有更好的方法来推送此电子邮件,同时避免电子邮件提供商将我的IP列入黑名单。
以下是我的表结构
第一张表
Notification
ID // autoincrement
message // the message sent to users
createDate // date created
第二张表
User_Notification
ID // auto increment
userid // Id of users
notification_id // id of notification from first table
status // 0 or 1
因此,每当添加帖子时,我都会在第一个表(通知)中插入通知,然后从另一个表(下面)中获取该组的所有关注者,其中我存储了用户ID和组ID。然后我在第二个表中插入每个用户(user_notification)。
我的cron作业从user_notification表中获取20条记录,并从通知表中获取通知消息。我还从用户表中获取用户电子邮件。
$firstquery = $lnk->mysqli->query("select * from user_notification where status=0 order by id ASC limit 0, 20", MYSQLI_USE_RESULT);
$secondquery = $lnk->mysqli->query("select * from notification where id=$notification_id", MYSQLI_USE_RESULT);
$thirdquery = $lnk->mysqli->query("select email from user_table where id IN($userids)", MYSQLI_USE_RESULT);
for($no=0;$no<counter;$no++)// loop to send emails
{
$lnk->emailsender($subject,$emailbody,$usr_email[$no]);
}
请有更好的方法吗?
答案 0 :(得分:2)
除非您与ISP建立了非常具体的关系,否则极有可能将您列入黑名单,或者您的电子邮件会直接发送到垃圾邮件。很难将大量电子邮件建立为合法邮件。您可以使用群发邮件服务API为您完成一些肮脏的工作,例如邮件黑猩猩或不断联系。
因此,您拥有的代码最有可能工作,减去电子邮件位,这应该通过邮件服务及其相关API来完成。
答案 1 :(得分:1)
您也可以在用户收到通知后立即发送电子邮件,而无需使用cron例程,但是如果您的网站由于某种原因而遇到活动激增,您可能会发现某些电子邮件无法通过。< / p>
您还可以考虑使用像MailChimp这样的第三方服务,它已经拥有电子邮件提供商的良好权限,但这需要付出代价,每分钟发送4封电子邮件,我认为不值得。