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

标签 php email codeigniter notifications

我有一个简单的用户注册表单,带有一个复选框,如果用户的任何项目有事件,用户可以每天收到一封电子邮件通知……就像 Stack Overflow 有一个“每天通知 xxx@example.com 任何新的答案”。

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

  1. 在用户数据库中,如果用户希望每天收到一封电子邮件,则设置一个 bool 值。

  2. 如果有任何项目事件,项目会更新为当前时间戳。

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

在我开始实现之前,如果我有任何问题/疑虑,希望得到一些指导:

  1. 我在共享托管环境中。我需要采取哪些预防措施以免被托管公司或接收邮件服务器误识别为垃圾邮件?

  2. 我是否需要“分块”收件人列表(一次 50 封电子邮件)并向每个组发送电子邮件?这就像 sleep 一样简单吗(30);在每次调用 mail() 之间?

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

谢谢。

最佳答案

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

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

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

关于php - 如何使用 PHP 向用户发送每日电子邮件通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6034237/

相关文章:

php - Web 应用程序 - 显示月份功能的 slider

php - 在保存到数据库之前如何将 IP 地址转换为整数

php - MYSQL 连接 - 未知列

email - 如何从电子邮件地址识别网络邮件服务?

jquery - codeigniter ajax 函数没有响应

javascript - 获取使用序列化动态检查输入复选框的所有最近字段的值

php - 如何用PHP提取邮件附件?

PHP 替换字符串

c# - Outlook Com 未注册

php - 如何向数据库表中的多个收件人发送电子邮件?