目录
二·配置php.ini(php工具箱或wampserver)
实现总代码:delete.php(控制开关的文件)+main.php(主程序文件)
一·下载sendmail解压保存(记住路径)
二·配置php.ini(php工具箱或wampserver)
Ctrl+f搜索Mail function关键字
SMTP = smtp.qq.com
//SMTP = smtp邮箱地址(QQ邮箱是smtp.qq.com, l63邮箱是smtp.163.com)
smtp_port = 25
sendmail_from =2223098767@qq.com //使用的邮箱地址
sendmail_path ="E:\wamp\wamp64\sendmail\sendmail.exe -t" //刚刚sendmail解压的目录
三·配置sendmail.ini
//QQ邮箱不能直接使用密码,要使用QQ授权码
什么是授权码,它又是如何设置?_QQ邮箱帮助中心https://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256
[sendmail]
smtp_server=smtp.qq.com
smtp_port=25
auth_username =2223098767@qq.com //使用的邮箱地址
auth_password=QQ邮箱授权码
force_sender=2223098767@qq.com //使用的邮箱地址
四·编写代码
(1)初步实现发送邮件
邮箱的主题必须使用,
$subject ="=?utf-8?B?".base64_encode("测试")."?=";//邮件主题
不然会出现中文乱码
$to ="3215530073@qq.com";//发送邮件的目的邮箱
$subject ="=?utf-8?B?".base64_encode("测试")."?=";//邮件主题
$message ="测试";//邮件内容
$from = "2223098767@qq.com";
$headers = "From: $from";
$result = mail($to,$subject,$message,$headers);
(2)邮件持续定时发送
(这时你会发现,关了浏览器程序还在运行,没法关闭php程序???????)
<?php
ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.
set_time_limit(0); // 执行时间为无限制,php默认的执行时间是30秒,通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60; // 设置的时间间隔
//使用do....while+sleep()以达到定时效果
do{
//发送邮件部分
$to ="3215530073@qq.com";//发送邮件的目的邮箱
$subject ="=?utf-8?B?".base64_encode("测试")."?=";//邮件主题
$message ="测试";//邮件内容
$from = "2223098767@qq.com";
$headers = "From: $from";
$result = mail($to,$subject,$message,$headers);
sleep($interval); //应用时间间隔
}while(true);
?>
(3)解决不能停止的问题
用外部的数据(delete.php)进行跳出
//delete.php
<?php
$decide['switch']="false";
?>
//主程序文件
<?php
ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.
set_time_limit(0); // 执行时间为无限制,php默认的执行时间是30秒,通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60; // 设置的时间间隔
//使用do....while+sleep()以达到定时效果
do{
include('decide.php'); // 引入文件
if($decide['switch']=="false") break;
//发送邮件部分
$to ="3215530073@qq.com";//发送邮件的目的邮箱
$subject ="=?utf-8?B?".base64_encode("测试")."?=";//邮件主题
$message ="测试";//邮件内容
$from = "2223098767@qq.com";
$headers = "From: $from";
$result = mail($to,$subject,$message,$headers);
sleep($interval); //应用时间间隔
}while(true);
?>
(4)从数据库中提取数据并应用
我实现的是数据取出后,将数据删除
读取数据库表中信息使用的是
$sql = "select * from xx limit 1";//只读取表中的第一行
删除数据库表中信息使用的是
$ee="delete from xx where id="."'".$row["id"]."'";
五·总代码
实现总代码:delete.php(控制开关的文件)+main.php(主程序文件)
//控制开关的文件
<?php
$decide['switch']="false";
?>
//主程序文件
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行.
set_time_limit(0); // 执行时间为无限制,php默认的执行时间是30秒,通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60; // 设置的时间间隔
//连接数据库部分
$servername = "localhost";
$username = "root";
$password = "123";
$dbname = "mail";
$conn = new mysqli($servername, $username, $password, $dbname);// 创建连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);// 检测连接
}
$decide="";
do{
include('decide.php'); // 引入文件
if($decide['switch']=="false") break;
//读取数据库表中数据
$a=null;
$sql = "select * from xx limit 1";
$result=$conn->query($sql);
$row=mysqli_fetch_assoc($result);
$a=$row["content"];
$b=$row["order"];
//将读取过得信息删除
$ee="delete from xx where id="."'".$row["id"]."'";
$rr=mysqli_query($conn,$ee);
//发送邮件部分
$to ="3215530073@qq.com";//发送邮件的目的邮箱
$subject ="=?utf-8?B?".base64_encode($b)."?=";//邮件主题
$message =$a;//邮件内容
$from = "2223098767@qq.com";
$headers = "From: $from";
$result = mail($to,$subject,$message,$headers);
sleep($interval); //应用时间间隔
}while(true);
?>
本文参考文件: