使用jquery php自动发送电子邮件通知

时间:2012-05-21 12:49:36

标签: php jquery ajax email notifications

这是一个很长的问题,所以请光着我。

我想发送关于每个新上传,新评论,新帖子等的电子邮件通知......

现在我正在调用一个函数:

 notify($user_id, $submitter_id, $post_id);

notify()处理这些ID并调用mail(),邮件将发送给“提交者”和之前评论过的人。问题是,脚本耗时太长,因为我向此脚本发送了一个AJAX请求以保存注释,所以用户最终等待notify()完成。这就像一个链接过程。

有人能建议我更好的方法吗? 我不希望Ajax脚本等待:

  • 保存评论
  • 并同时发送电子邮件。

而且我也不能使用cron,因为我希望这是瞬间的,有点像FB。

感谢。

3 个答案:

答案 0 :(得分:3)

在FB等等。它的创建就像我想的那样:

当您需要更新notify时,您会向表格outbounds插入一些消息

insert into `outbounds` (`email`, `status`, `subject`, `message`, `created`, `sent`)
value ('some@address.net', STATUS::created, 'Some thing is happened', 'Message here', NOW(), NULL);

脚本始终在运行,或者像cron那样执行,或者,您可以通过设置超时= 1来发送消息来卷曲此脚本

select * from `outbounds` where status = STATUS::created

成功发送后不要忘记

update `outbounds` set `status` = STATUS::sent, sent = NOW() where id = $message_id

答案 1 :(得分:2)

如果您一次发送100封电子邮件,我会推荐第三方服务,例如Amazon SES或我个人最喜欢的Postmark。您应该能够ping这些服务并继续执行其余功能,而无需等待回调。此外,它们的延迟很低,因此您的邮件几乎可以即时发送。

答案 2 :(得分:1)

使用队列存储将要发送的电子邮件,并让脚本(例如cron作业)发送这些邮件。这样,用户只需等待在队列中插入邮件,这可能不会花费很长时间。

虽然发送大量邮件时存在各种陷阱,mail()确实不是最好的解决方案。