<?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);
}
其次在执行时 如果更改 一些设置 它还是按原来的发送一次 新的发送一次
这样即使更改今天给谁发送生日邮件 以前的也会执行吧
$variable
是什么鬼?哪来的?你前面有这个变量吗?你不是叫'$arr'么?还有,不要用
$key
、$value
这种变量名,即使只是临时变量,既然它是有含义的,用$email
、$birthday
不是更好吗?