2

我目前正在开展一个需要向用户发送电子邮件通知的项目。它的工作方式是,用户关注特定类别的帖子/组,每当在帖子类别/组下有新帖子或评论时,他们都会收到电子邮件通知他们,其中包含帖子本身的片段。

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

请问有没有更好的方法来做到这一点?

4

2 回答 2

2

除非您与您的 ISP 有非常具体的关系,否则您极有可能被列入黑名单,或者您的电子邮件将直接进入垃圾邮件。很难确定群发电子邮件是合法的。您可以使用群发邮件服务 API 为您完成一些繁琐的工作,例如邮件黑猩猩或持续联系。

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

于 2013-08-07T15:50:40.643 回答
1

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

您也可以在用户收到通知后立即发送电子邮件,从而绕过对 cron 例程的需要,但是如果您的网站因任何原因而出现活动激增,您可能会发现一些电子邮件无法通过。

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

于 2013-08-07T15:50:08.223 回答