php 发送email 如何进行生日邮件发送

<?php

//邮件发送

require '../static/assets/vendors/mailer/class.phpmailer.php';
require '../static/assets/vendors/mailer/class.smtp.php';
require '../functions.php';

date_default_timezone_set('PRC');
ignore_user_abort();
set_time_limit(0);
$interval = 60*1;
do{
$sql = 'select bir,email FROM users ';
$bir_email = xiu_query($sql);
$arr = array( );
$b=date('m/d');
foreach ($bir_email as $item) {
  $timestamp = strtotime($item['bir']);
  $a = date('m/d', $timestamp);
  if ($a === $b) {
    $arr[$item['email']] = $item['bir'];
  }
}
    $mail = new PHPMailer();
    $mail->SMTPDebug =3;
    $mail->isSMTP();
    $mail->SMTPAuth=true;
    $mail->Host = 'smtp.qq.com';
    $mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
        )
    );
    $mail->SMTPSecure = 'ssl';
    //设置ssl连接smtp服务器的远程服务器端口号 可选465或587
    $mail->Port = 465;
    $mail->Hostname = 'localhost';
    $mail->CharSet = 'UTF-8';
    $mail->FromName = 'XXXXXX';
    $mail->Username ='xingyang0320@foxmail.com';
    $mail->Password = 'ipstvtuisxwaeche';
    $mail->From = 'xingyang0320@foxmail.com';
    $mail->isHTML(true);
// foreach ($variable as $key => $value) {
//   $mail->addAddress($key);
// }
    $mail->addAddress('2010055685@qq.com');
    $mail->Subject = '生日快乐';
    $mail->Body ='祝你生日快乐';
    // $mail->addAttachment('./src/20151002.png','test.png');
    $status = $mail->send();
    if($status)
    {
    echo '发送邮件成功'.date('Y-m-d H:i:s');;
    }
    else
    {
    echo '发送邮件失败,错误信息未:'.$mail->ErrorInfo;
    }
    sleep($interval);//休眠1minute
}while(true);

?>

date_default_timezone_set('PRC');
ignore_user_abort();
set_time_limit(0);
$interval = 60*1;
这个虽然可以定时发送 但是无法更改
do 里面的函数 我需求是每次都连接数据库 要查询一回生日 是否和今天一样
是的话放入arr 数组

进行多个发送

但是使用 没有响应
foreach ($variable as $key => $value) {
$mail->addAddress($key);
}

其次在执行时 如果更改 一些设置 它还是按原来的发送一次 新的发送一次
这样即使更改今天给谁发送生日邮件 以前的也会执行吧

阅读 2.1k
2 个回答

$variable是什么鬼?哪来的?你前面有这个变量吗?你不是叫'$arr'么?

还有,不要用$key$value这种变量名,即使只是临时变量,既然它是有含义的,用$email$birthday不是更好吗?

你发生日邮件,为什么要1分钟执行一次? 难道有人会在10:30是生日,10:35就不是生日了?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题