我的虚拟主机支持cronjobs。我很新,所以我几乎不知道我在做什么。我安排cron运行一个发送电子邮件的脚本。但我不知道该怎么办!这是我的cron:0 0 28 * * php -f /home/a7269592/contact.php
现在我怎么能调整我的代码所以当它是第28个时,该代码将发送一封电子邮件。这是PHP:
<?php
if(isset($_POST['email']))
{
$headers = "From: Memory Jet <your_company@example.com>\r\n";
$to_visitor = $_POST["email"];
$common_data = $_POST["message"];
mail($to_visitor, "Your Memory", $common_data, $headers);
} ?>
这是html表单:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<html> <body><form method="post" action="contact.php">
Email: <input name="email" type="text"><br> name:<br>
<textarea name="name" rows="15" cols="40"></textarea><br>
Message:<br> <textarea name="message" rows="15" cols="40"></textarea><br>
<input type="submit"> </form> <body> <html>
</body>
那么我将如何更改php以便cron安排它?提前致谢! -ben
答案 0 :(得分:5)
不是到目前为止,我处于完全相同的情况。在我看来,你正试图将邮件从“发布时刻”完全转移到预定的时间表。所以,首先你需要知道的是:
当您运行CRON时,您无法访问$ _SERVER,$ _POST和其他全局变量
那是因为你运行PHP,而不是通过服务器,这是全局变量的AUTHOR。
因此,您需要为邮件创建临时存储,例如邮件任务文件(可能是执行时附加任务的问题,例如,如果您的邮件发送邮件发送邮件,同时您的前端PHP脚本想要添加一些任务,以便任务文件可能被损坏)或数据库,或者你的想象力可以做什么。
之后,您需要设置您的cron任务,例如前500个邮件任务并邮寄它。当然,您可以在此刻邮寄所有邮件任务,而不是问题。
希望,这有帮助。
答案 1 :(得分:2)
我看到你要做的是什么,但你是否计划只在第28次发送电子邮件或存储它并在28日发送?如果您使用的是第一个选项,则应更改它,以便说明这一点。
<?php
$today = getdate()
if(isset($_POST['email']) && $today['mday'] == 28)
{
$headers = "From: Memory Jet <your_company@example.com>\r\n";
$to_visitor = $_POST["email"];
$common_data = $_POST["message"];
mail($to_visitor, "Your Memory", $common_data, $headers);
} ?>
至于存储,评论是对的,你应该重新设计你的代码。 crontab将运行代码而不从表单中获取gettimg数据 - 基于Web,并且不同地处理CLI请求。我会定义添加另一个文件来处理表单请求并将其放到表单或数据库。由crontab运行的那个将从该文件或数据库中读取。