目标: 实现模块化,可重用,面向对象的类或包,它将负责自动化用户通知的过程。 这些通知是根据一组规则发送给多个用户的,后者正如我已经提到的那样。
例如:每次新用户注册,并且定义了系统消息,并且每个超级用户有超过10个活动用户,则系统消息将发送给所有用户。 / p>
这些“规则”可能会被实现为方法,或者在其中包含SQL模型的子类。
环境: LAMP,PHP 5.3。 首选实现是在PHP中。 SendGrid邮件传递服务+他们的官方PHP库。
实施(到目前为止我的想法): 我想过使用cronjob或Apache HTTP worker,问题是这个模型将负责系统的所有电子邮件通知,在这种情况下,它必须每60秒左右运行一次,以确保按时交货并同步交货。 要添加或删除cronjobs,我想过使用PHP的exec()或system(),虽然我确信有更好的方法,可能直接用文件函数编辑cron jobs文件?。
问题: 任何实现都应该能够与SendGrid集成,因为这是交付 我们目前正在使用的系统,它被证明是有效的。
这是系统的核心,所以它需要尽可能地防范,并且能够进行自我诊断,否则就不会有任何好处,而且发送这些电子邮件会更好直接通过用户访问的页面发送通知,并在加载时间,设计等方面妥协。
有什么想法吗?我正朝着正确的方向前进吗? 我正在寻找已经在github和网络其他部分实现的东西,但没有任何东西可以满足我的需求和要求。 SendGrid似乎也没有提供内置队列。
非常感谢任何帮助!
答案 0 :(得分:3)
我在SendGrid工作。
最强大的解决方案是不在代码中实现队列,而是设置本地邮件服务器并让它管理您的电子邮件排队。然后,该邮件服务器将配置为使用SendGrid作为提供所有其他功能的智能中继。
这有几个好处:
SMTP命令流水线操作减少了协议请求的数量
我们configuration guides for mail servers可以为您指明正确的方向。
就触发发送到本地服务器的逻辑而言,我认为你是在正确的轨道上。您可以使用cron构建后台进程系统,或者可以使用类似php-resque的内容来抽象某些内容并从代码中获得更多控制权。 php-resque或类似的解决方案可能会给你足够的控制权,让你有信心不使用本地MTA。