如何让用户决定用PHP发送邮件的具体时间延迟?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让用户决定用PHP发送邮件的具体时间延迟?相关的知识,希望对你有一定的参考价值。

我有基于Zend和php的软件。

我正在寻找一种方法,让每个用户在约会提醒电子邮件发送之前选择延迟时间。

例如:

用户1:想要在活动开始前12小时发送电子邮件。用户2:想要在活动或预约前24小时发送电子邮件。

我可以使用cron作业根据事件之前或之后的特定时间搜索和触发事件,但我找不到让用户按照自己的方式自定义事件的方法。

非常感谢您对变通方法的帮助!

答案

那么为什么你不能在某个地方输入一个选项(或设置一组选项。即30分钟,1小时,3小时,6小时,12小时,24小时等) - 然后将该值存储在一个表格中,并参考约会和用户适用于?

就像是:

  id    |    appointment   |       user       |   reminder(hrs)  |   sent
   1    |    Joe's Bday    |   jack@test.com  |       24         |     1
   2    |    Joe's Bday    |   mary@test.com  |       12         |     0

如何使用它的示例

$query = "Select * from remindertable;"
$query_results = mysqli_query($db, $query);
while($row = mysqli_fetch_row($query_results)) {
   if($row[4] == 0) {       

      $query = "SELECT appt-time FROM <table w data> WHERE appt-name = '" .$row[1] ."' AND appt-user ='" .$row[2] ."'";
      $timequery = mysqli_query($db, $query);
      $timequery = mysqli_fetch_assoc($timequery);

      $appt-time = date('Y-m-d H:I:S', strtotime($timequery['appt-time']));
      $appt-time2 = new DateTime($appt-time);

      //Get Current Time from Database
      $query = "SELECT NOW()";
      $currentQuery = mysqli_query($db, $query);
      $currentQuery = mysqli_fetch_array($currentQuery);

      $current-time = date('Y-m-d H:I:S', strtotime($currentQuery[0]));
      $current-time2 = new DateTime($current-time);

      $interval = $current-time2->diff($appt-time2);

      //CHECK THE INTERVAL AGAINST THE VALUE FROM THE DATABASE AND UPDATE WHEN SENT
   }

}

http://php.net/manual/en/class.datetime.php

http://php.net/manual/en/datetime.diff.php

http://php.net/manual/en/class.dateinterval.php

以上是关于如何让用户决定用PHP发送邮件的具体时间延迟?的主要内容,如果未能解决你的问题,请参考以下文章

不使用 PHP 提交表单

我如何让Raspberry Pi用python发送带有图片的电子邮件

c#代码怎么通过outlook发邮件

用php-redis给全部用户发送邮件,数据量很大,思路应该是啥样的

如何让一个简单的 php 应用程序从 heroku cedar 堆栈发送电子邮件?

php使用SMTP发送电子邮件[重复]