使用PHP MySQL的电子邮件通知系统

时间:2013-08-07 15:42:56

标签: php mysql email notifications

我目前正在开发一个需要向用户发送电子邮件通知的项目。它的工作方式,用户遵循某些帖子/群组,只要在帖子类别/群组下有新帖子或评论,他们就会收到电子邮件,通过帖子本身的片段通知他们。

我希望每天发送超过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]);
}

请有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

除非您与ISP建立了非常具体的关系,否则极有可能将您列入黑名单,或者您的电子邮件会直接发送到垃圾邮件。很难将大量电子邮件建立为合法邮件。您可以使用群发邮件服务API为您完成一些肮脏的工作,例如邮件黑猩猩或不断联系。

因此,您拥有的代码最有可能工作,减去电子邮件位,这应该通过邮件服务及其相关API来完成。

答案 1 :(得分:1)

每天5000封电子邮件大约每分钟发送4封电子邮件,或者每15秒发送一封电子邮件。如果我是你,我会写一个cron例程来运行每一分钟发送将要发送的电子邮件。例如,这将确保您避免像垃圾邮件发送者那样快速发送2500封电子邮件。这也意味着您的用户可以快速收到电子邮件通知。

您也可以在用户收到通知后立即发送电子邮件,而无需使用cron例程,但是如果您的网站由于某种原因而遇到活动激增,您可能会发现某些电子邮件无法通过。< / p>

您还可以考虑使用像MailChimp这样的第三方服务,它已经拥有电子邮件提供商的良好权限,但这需要付出代价,每分钟发送4封电子邮件,我认为不值得。