Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每X分钟使用SwiftMailer(PHP)发送一封电子邮件_Php_Email - Fatal编程技术网

每X分钟使用SwiftMailer(PHP)发送一封电子邮件

每X分钟使用SwiftMailer(PHP)发送一封电子邮件,php,email,Php,Email,我可以通过在客户机进入特定页面时发送电子邮件使代码正常工作,问题是如果用户/客户机重新加载页面,就会发送新的电子邮件,这可能导致从我的smtp服务器发送数百封邮件 我正在寻找一个简单的替代方案,它只能每5/10/15分钟发送一封验证电子邮件。当用户重新加载页面时不会 我应该使用javascript还是简单地休眠函数都可以 PD:电子邮件是通过php上的$\u会话变量发送的。您可以使用cron作业(如果您的托管环境允许您定义),也可以跟踪您上次发送电子邮件的时间 在后一种情况下,您可以执行以下操作

我可以通过在客户机进入特定页面时发送电子邮件使代码正常工作,问题是如果用户/客户机重新加载页面,就会发送新的电子邮件,这可能导致从我的smtp服务器发送数百封邮件

我正在寻找一个简单的替代方案,它只能每5/10/15分钟发送一封验证电子邮件。当用户重新加载页面时不会

我应该使用javascript还是简单地休眠函数都可以


PD:电子邮件是通过php上的
$\u会话
变量发送的。

您可以使用cron作业(如果您的托管环境允许您定义),也可以跟踪您上次发送电子邮件的时间

在后一种情况下,您可以执行以下操作:

/**
 * Get the current date & time.
 *
 * @return String
 */
function now() {

  return date('Y-m-d H:i:s'); 
}

/**
 * Store last send date. For the sake of simplicity, let's
 * write it to a file. 
 *
 * @return String
 */
function last_send_update($date) {

  file_put_contents('mails_last_send.json', json_encode(['date' => $date]));
}

/**
 * Get last send date from a file. 
 *
 * @return String
 */
function last_send_get() {

  if (!file_exists('mails_last_send.json')) {

    last_send_update(now());
  }

  return json_decode(file_get_contents('mails_last_send.json'))->date;
}

/**
 * Mock sending mails.
 */
function send_mails() {}

// Do the actual math & decide what to do.
  
$last_send = date_create(last_send_get());
$now       = date_create(now());
$diff      = date_diff($now, $last_send)->i; // Difference in minutes

if ($diff >= 10) { 
  
  send_mails();
  last_send_update($now);
}
有关Cron及其使用方法,请参阅:


这是否回答了您的问题?