【问题标题】:How to send emails via cron job usng PHP mysql如何使用 PHP mysql 通过 cron 作业发送电子邮件
【发布时间】:2011-03-23 01:12:54
【问题描述】:

我设法发送了多封电子邮件 (check here)。我一直坚持通过 cron 发送自动电子邮件。

这就是我所需要的——当管理员发送电子邮件时,我将消息、电子邮件、事件日期存储在数据库中。现在我正在尝试设置一个 cron 作业,以便从表中向所有这些 id 发送电子邮件,并带有我作为提醒的消息。我不熟悉 cron 作业脚本,任何人都可以帮助指导我编写可以放置在 cron 选项卡中的脚本的正确方法。我计划发送两封邮件 - 活动前一天和活动当天。谢谢

【问题讨论】:

    标签: php email scripting cron


    【解决方案1】:

    只需编写一个普通的 PHP 脚本——如果它直接从浏览器启动,它就可以工作。然后将相同的 PHP 文件安排在 cron 中运行,以此为指导:

    http://www.unixgeeks.org/security/newbie/unix/cron-1.html

    基本上,使用开头的值,指定时间表(分钟、小时、星期几、每月星期几等)。然后设置它运行的用户,这可能是“apache”或您的 Web 服务器守护程序在其下运行的任何内容。然后将 cron 正在运行的“命令”设置为 php php_email_script.php(其中“php_email_script.php”是您的 PHP 文件的名称。

    【讨论】:

    • 我以前也这样做过,但根据我的经验,wget 方法更容易维护,因为您仍然只有一个入口点。当然,您需要了解安全隐患,因此为了安全起见,脚本不应带参数。
    • 嗨,谢谢,我按照你的指示做了。它工作正常!我将发布答案(简单查询和邮件功能)作为答案。我应该在“回答您的问题”下发布吗?
    • 嗨,我很快就回复了,如果我的查询返回 3 条日期在当前日期之后的记录,它只是为第一个发送邮件,而不是为其他发送邮件。我尝试了while循环,但这没有帮助。有什么建议吗?
    • 我会将此作为另一个问题发布,并以这种方式获得一些帮助。听起来您的查询或您的 while 循环是错误的。
    【解决方案2】:

    30 分钟仍然无人接听,这里有几个敞开的门:

    • cron 从系统范围的/etc/crontab 或您使用crontab -e 编辑的个人 crontab 读取它的规则
    • cron 采用一种格式,您可以在其中说明应该在哪一分钟/小时/天/月发生事情,请使用 google 或 man crontab 作为格式
    • cron 具有将命令输出邮寄给拥有 crontab 的用户的惊人副作用

    现在你说你正在使用 php。从 cron 运行一些 php 的最简单方法是发出 wget -O - -q http://yoursite.com/yourprocessingscript.php?verysecret=123123 并在 yoursite.com 上有一个适当的处理脚本。 (您可能想让该脚本检查 $_SERVER['REMOTE_ADDR'])

    所以简而言之,如果你把正确的魔法放在 /etc/crontab 中,就像

    0 0 * * * jay wget -q -O - "http://yoursite.com/processmidnight.php?secret=yes_very"
    

    并让您的脚本产生一些合理的输出,您将收到一封发送给本地用户 jay 的邮件,您可能希望将其转发。

    【讨论】:

    • 嗨,谢谢,您的解释和以下答案帮助我朝着正确的方向前进。我很快就会发布我所拥有的。它工作正常。谢谢。我尝试了 curl 方法,但我是通过在 cron 选项卡中调用 php 脚本来做到的。
    猜你喜欢
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    相关资源
    最近更新 更多