【问题标题】:Email Notification System Using PHP MySQL使用 PHP MySQL 的电子邮件通知系统
【发布时间】:2013-08-09 02:07:40
【问题描述】:

我目前正在处理一个需要向用户发送电子邮件通知的项目。它的工作方式是,用户遵循某些帖子/组的类别,每当在帖子类别/组下有新帖子或评论时,他们都会收到电子邮件通知他们,其中包含帖子本身的 sn-p。

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

请问有什么更好的办法吗?

【问题讨论】:

  • isp 是否将它们列入黑名单并不重要。我们尝试了这个,我们的 isp 首先阻止了他们,因为他们认为我们被黑客入侵了,在解除阻止并拒绝这样做之后,我们的 DNS 服务器主机出现问题,因为他们说这会减慢 DNS 服务器的查询量通过 DNS 制作。我们还权衡了各种选项,然后意识到最好使用已经拥有白名单 IP 地址并且专为此类应用程序构建的第三方
  • 除非您使用其他方式发送电子邮件,否则您将被列入黑名单。尝试使用 sendgrid 真的很容易使用,而且也不贵。 sendgrid.com/docs/Code_Examples/php.html
  • @LiamSorsby 感谢您的解释。
  • @dvidsilva 感谢您的建议,目前正在考虑 mandrill.com 提供比 sendgrid 便宜得多的现收现付选项。
  • @andychukse 好的,这是一个不错的选择,我没有检查过不同的定价,因为不幸的是我从来没有超过 10 封每日电子邮件:P

标签: php mysql email notifications


【解决方案1】:

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

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

【讨论】:

  • 谢谢我要去mandrill.com(由mailchimp拥有)。感谢您坦诚的建议。
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    相关资源
    最近更新 更多