如何使用mysql和php在指定的日期和时间发送邮件

如何使用mysql和php在指定的日期和时间发送邮件,php,mysql,email,automation,Php,Mysql,Email,Automation,我拥有的是, 用户在数据库中指定的日期和时间 用于发送邮件的php脚本 必需的 当指定的日期和时间到达时触发php脚本 我正在使用本地apache服务器 示例:A希望在5天内将邮件发送给B。A在数据库中输入日期和时间,5天后它将通过运行php mailer脚本自动发送 有没有办法安排这项工作?编写一个函数,从DB获取执行日期的发送方和接收方列表 ex: check php date is equal to DB date to sent the email. Add the php scrip

我拥有的是,

  • 用户在数据库中指定的日期和时间
  • 用于发送邮件的php脚本
  • 必需的

  • 当指定的日期和时间到达时触发php脚本
  • 我正在使用本地apache服务器

    示例:A希望在5天内将邮件发送给B。A在数据库中输入日期和时间,5天后它将通过运行php mailer脚本自动发送


    有没有办法安排这项工作?

    编写一个函数,从DB获取执行日期的发送方和接收方列表

    ex:  check php date is equal to DB date to sent the email.
    Add the php script to a cron job
    
    检查示例代码

    $queryToGetuserListToSendEmail = "select * from userlist where date_toSend_email = ''". date("Y-m-d H:i:s")."'";
    $userListToSendEmail = array();//senders relievers and other details taken from DB to send emails
    
    foreach ($userListToSendEmail as $usersToSendEmail){
    //sendEmail
    }
    
    用于每天凌晨2:30运行作业的Cron作业(将其添加到Cron选项卡中)


    您可以使用脚本在数据库中按日期立即检查差异日期,时间间隔为1分钟或1秒,或者每次运行脚本检查。例如,通过php:

    public static function diff_time($date, $timezone = null,$now=null)
        {
            if($now == null)
            {
                $now =  date_create(date('Y-m-d H:i:s'));
                $now = new \DateTime(date('Y-m-d H:i:s'));
                $time_now = time();
            }
            if(is_int($date)){
                $time = $date;
                $date = date('Y-m-d H:i:s',$date);
            }
            else{
                $time = strtotime($date);
            }
            $date=new \DateTime($date);
            $diff=$date->diff($now);
            return $diff`;}
    
    如果发送邮件的时间接近或为零,则可以使用check diff time。 现在您可以添加

    crontab -e 
    


    在示例中,每次运行“检查并发送邮件”

    创建一个cron作业并安排它。在db中输入日期和时间时,还要添加发送日期和时间,以便在cron中指定在发送日期和时间运行cron并发送电子邮件的条件。您能否提供一个示例代码,通过从db中提取日期将php脚本添加到cron作业中
    crontab -e 
    
    ` * * * * * php ~/script.php`