通过 php 脚本定期发送电子邮件

Posted

技术标签:

【中文标题】通过 php 脚本定期发送电子邮件【英文标题】:sending email periodically through php script 【发布时间】:2014-06-17 05:04:48 【问题描述】:

我正在开发一个自动监控系统。我制作了一个具有 mysql 数据库的 .NET 应用程序。为此,我开发了一个普通的管理员面板,管理员可以在其中登录并从数据库上触发的各种查询中获取必要的报告。面板中还有一个“总结报告”,它只是粗略的每周总结。现在我想要的是,我希望这份报告(所有文本)在 7 天内自动发送到某个电子邮件“xxxxx@xxx.com”。我以前使用过一些 php 脚本在单击提交按钮时发送电子邮件。就像下面的一样。

<?php
if(isset($_POST['isPost']))

$header="From:".$_POST['customer_mail']."\r\nName:".$_POST['name']."\r\nCity:".$_PO        ST['city'];
$subject = $_POST['title'];
$message="From:$_POST[customer_mail]\r\nName:$_POST[name]\r\nPhone:$_POST[city]\r\n        \r\n\r\n\r\n".$_POST['details'];
$to = 'xxxxxxxxx@xxx.com';

$send_contact=mail($to,$subject,$message,$header);

if($send_contact)

echo "<h6 style='text-align:center;color:green'>Sent Successfully</h6>";

else

echo "<h6 style='color:red'>Error sending e-mail'</h6>";


?>

这是正常的邮件发送脚本,可以正常工作。但是出于我想要的上述目的,任何人都可以帮助我定期自动设置此操作,或者为我指出如何执行此操作的正确方向。我已经搜索过这样的 php 脚本,但没有满意的结果。 ~ 问候

【问题讨论】:

这就是报告按钮的用途。请停止哭泣,作为对每个答案的单独评论。投反对票,举报,继续前进。 【参考方案1】:

您可以使用 cronjobs 来做到这一点。 在给定时间/日期/间隔执行命令的长时间运行的进程。

根据您的系统,有不同的方法。

如果您在网络服务器上有脚本,有人正在为您/网络主机服务运行

请系统管理员使用 cronjob 运行脚本。或者,如果您可以在任何管理面板中自行设置,请搜索任何帮助文档。向您的网络托管服务商/系统管理员咨询更多信息。

如果您在自己的本地计算机上有脚本:

UNIX

尝试阅读crontab 以了解如何运行 php 脚本或与此相关的任何脚本。

例如输入crontab -e 并在您的 crontab 中添加以下行,cronjob 将每小时运行您的脚本:

00 * * * * /usr/local/bin/php /home/Low-pointer/myscript.php

Here is some more information if you want to play with the intervals

Windows

如果你使用 Windows,你可以使用scheduled tasks 来运行 php 命令。

例如将以下命令添加到调度程序中:C:\wamp\bin\php\php.exe -f C:\wamp\www\my_script.php

您还可以使用网络 cron 服务 (Google it),这些是在指定时间运行页面(例如在您的网络服务器上)的在线服务。免费或付费。

【讨论】:

Fred 感谢您的编辑,但我真的很好奇(英语不是我的母语。当 Google 用作动词时(它已成为),它仍然是大写字母吗? 不客气,蒂姆。我倾向于这样认为,因为它是一个公司名称(已被转换),而不是字典中的实际名词/单词(但很快就会改变)哈哈.然而,这是一个非常好的问题,但我更倾向于将其大写;不过这值得商榷。 这可能是不同的,在我的国家,他们实际上在 2 年前将它添加到字典中。 “Google”这个词实际上在我的 Robert & Collins 高级版词典中(是的,我喜欢一本真正的书作为参考wink,并且大写。【参考方案2】:

就像每个人已经说过你必须使用 cronjob 来完成你的任务。 我假设您使用 Linux 操作系统作为您的生产环境。 所以你需要:

1) 一个 php 端点(例如 www.mywebsite.com/emailsend.php)或一个 CLI php 脚本,在调用时发送电子邮件。

2) 正确的 crontab 规则

下面是一个简单的 shell 脚本 (mailsend.sh) 示例,该脚本使用 CURL 调用端点并保存一个带有网络服务器最终响应的 html 文件

#!/bin/bash

curl http://www.mywebsite.com/emailsend.php -o /path/to/my/mailsendreport/"$(date '+%Y-%m-%d-%H-%M-%S')".html

将计划任务添加到 cron

crontab -e

然后添加如下规则

50 23 * * 6 sh /path/to/mailsend.sh  

“50 23 * * 6”是什么意思?这意味着每周的第六天,在第 23 小时,在第 50 分钟,您的 sh 脚本将被调用,然后您的 Web 应用程序和电子邮件将被发送。

一旦我写了一个关于这个的小文档,你可以看到它here

干杯

【讨论】:

【参考方案3】:

您可以使用 Cpanel 通过 cronjob 发送计划电子邮件(如果您正在使用它)。 一旦你打开 cpanel 就会出现 crontab 系统。 将您当前的代码添加到文件(xx.php)并将此命令添加到 cpanel 中的 crontab,

/usr/bin/php -q /home/public_html/xx.php

【讨论】:

到目前为止,这是唯一真正符合“答案”条件的“答案”。 虽然它仅限于 Cpanel,但 OP 甚至可能不会使用它。 是的,这更没用,OP什么也没说Cpanel!【参考方案4】:

您正在寻找“cron 工作”。

编辑:或者因为听起来你可能在 Windows 上,所以“计划任务”

【讨论】:

是的,但是如何在网络应用程序中实现这样的计划任务? @Low-Pointer:从技术上讲,它不是网络应用程序的一部分。这是一个独立的应用程序。 cron 会将其作为命令行可执行文件执行:php.net/manual/en/features.commandline.usage.php 所以寻找使用这些工具的基本教程。你是在 Windows 还是 linux 上?你需要付出更多的努力,发誓不会给你任何分数。 所以给 OP 一个实际的答案,而不是应该是评论。 本身,您还没有提供实际答案。 你也没有。这就像锅叫水壶黑;国际海事组织。

以上是关于通过 php 脚本定期发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

FORM HELP - 获取 PHP 脚本以通过 ajax 发送电子邮件数据

可以在 PHP 中计算通过 SMTP 发送的消息数吗?

mysql 将查询结果 定期 发送邮件,这个功能mysql可以实现么?

PHP 表单通过电子邮件发送的结果。我需要捕获表单中的上传文件

使用 php 脚本从自己的本地 apache 服务器发送电子邮件 [关闭]

如何使用cron执行mutt发送邮件?