如何向PHP用户发送每日电子邮件通知?

zee*_*zee 6 php email notifications codeigniter

我有一个简单的用户注册表单,其中包含一个复选框,如果有任何项目的活动,用户可以获得每日电子邮件通知...就像Stack Overflow有一个"每天通知xxx@example.com任何新答案".

我目前在LAMP环境中实现这一点的想法如下:

  1. 在用户数据库中,如果用户希望收到每日电子邮件,请设置布尔值.

  2. 如果有任何项目活动,则使用当前时间戳更新项目.

  3. 每晚(午夜),执行一个PHP文件(可能通过cron作业),该文件扫描项目数据库以确定哪些项目当天有活动.对于具有活动的项目,将选择项目所有者名称并扫描用户表以检查用户是否希望收到每日电子邮件通知.如果是,请添加到收件人列表; 否则,忽略.

在开始实施之前,我有一些问题/关注点会受到一些指导:

  1. 我在共享托管环境中.我是否需要采取哪些预防措施才能被托管公司或接收邮件服务器误认为是垃圾邮件?

  2. 我是否需要"收集"收件人列表(一次50封电子邮件)并通过电子邮件发送每个组?这就像睡觉一样简单(30); 每次调用mail()之间?

  3. 我正在使用CodeIgniter框架,并且将让cron作业调用控制器中的相应函数以在午夜运行它.如何限制仅来自cron作业的呼叫,以防止某些未经授权的用户从浏览器调用此功能?

谢谢.

Zac*_*ner 1

  1. 如果您确实更改了 php 中的“From”标头,请确保将其更改为该服务器上托管的域。当 b.com 的服务器发送邮件 @a.com 时,它看起来很可疑。

  2. 我会单独发送电子邮件foreach ($Users as $User)...,因为这样您可以个性化电子邮件内容。即使您现在不需要个性化电子邮件,您以后也可能需要,并且在您需要时我们已经提供了支持。

  3. 首先,我会将脚本存储在 Web 根目录之外。我不确定 CodeIgniter 是否允许您执行此操作,但该脚本不需要由 Apache 提供服务。Cron 不关心脚本存储在哪里。此外,我还检查了脚本执行的时间。如果不是午夜,就不要发送电子邮件。另外,您可以保留日志,并在发送前检查以确保当天尚未发送电子邮件。