使用php sendmail插件定时发送天气预报提醒

闲来没事,就写了一个定时发送天气预报提醒到自己qq邮箱的功能。

大概逻辑:通过天气接口(免费天气接口)获取今日天气,处理好数据,最后通过mail()函数发送到邮箱(具体接口使用,自己看api文档)

1、下载sendmail.zip。链接:http://glob.com.au/sendmail

2、下载完成,进行解压。(我是解压到D:\sendmail,最好是短路径,长路径可能会出现问题)

3、配置php.ini

4、配置sendmail.ini


qq邮箱授权码如何获取?
登录qq邮箱,进入账号,往下滑,就会看到


就获取到qq邮箱授权码了!

5、重启apache
贴上代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
//获取天气预报
$weather = file_get_contents("https://www.tianqiapi.com/api/?appid=33116163&appsecret=s71cXjcw&version=v1");
$data = json_decode($weather,true);
//发送的邮箱
$to = '1830442332@qq.com';
//邮件的标题
$subject = '天气预报提醒';
//邮件内容
$message = $data['city']."天气:\r\n"."天气情况:".$data['data'][0]['wea']."\r\n"."今日温度:".$data['data'][0]['tem2']."\r\n"."当前温度:".$data['data'][0]['tem2']."~".$data['data'][0]['tem1']."\r\n"."穿衣指数:".$data['data'][0]['index'][3]['desc']."\r\n";
$headers = 'From: lisuibi@foxmail.com' . "\r\n" . 'Reply-To: lisuibi@foxmail.com' . "\r\n";
$status = mail($to, $subject, $message, $headers);
if($status){
echo '发送邮件成功,时间为'.date('Y-m-d H:i:s');
}else{
echo '发送失败';
}
效果:


以上,就完成了sendmail插件发送天气预报。但是还有一个问题就是定时发送?

我们使用win10的定时任务去完成!
首先,新建一个bat文件。

内容为:

1
php php文件路径

php为你配置的php环境变量(如果没配置就使用你php环境的绝对路径)

我的配置如下(具体看你实际路径):


bat文件创建成功!

打开win10任务计划程序

大功告成!!!