昨日出门,突然下雨,有感而发,遂有此物。

思路:
1、获取天气情况
2、利用PHP发送邮件至189邮箱(博主用电信号,联通、移动同理)
3、邮箱设置邮件短信提醒
4、设置计划任务,自动执行

1、获取天气情况

http://tianqi.xixik.com/weatherip/

我是从这网站获取的,别问我为什么不去weather.com.cn。我能说我水平不够,东西太多,提取不出来吗?
选择一个样式最简单,包含2天的样式

<iframe name="weather_inc" src="http://tianqi.xixik.com/cframe/8"  width="225" height="80" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>

效果如下:

嗯就是这个了,然后利用正则,把今天和明天2天的天气提取出来
<!-- CoolFormat Source Formatter http://blog.csdn.net/akof1314 --><div style="width:100%;border:1px #e3e3e3 solid;"><div style="width:100%;font-family:'Consolas', 'Courier New';font-size:12px;border-bottom:1px solid #e3e3e3;margin-top:5px;color:#000000;"> PHP Code </div><table style="width:100%;font-family:'Consolas', 'Courier New';font-size:12px;vertical-align:text-top;line-height:15px;" border="0" cellspacing="0" cellpadding="0"><tr><td style="color:#008284;background-color:#e3e3e3;vertical-align:text-top;"><div style="margin:7px;text-align:right;white-space:nowrap;"><nobr>1
2
3
4
5
6
7
8
</nobr></div></td><td style="background-color:#008284;padding:1px;"><div style="border:1px #008284 solid;"></div></td><td style="background-color:#efefef;width:100%;vertical-align:text-top;color:#000000;"><div style="margin:7px;"><?php

    $url  = <span style="color:#800000;">'http://cache.xixik.com.cn/8/dalian/'</span><span style="color:#000000;">; </span><span style="color:#008000;">//这儿填页面地址

</span><span style="color:#000000;">    $info&nbsp;=&nbsp;file_get_contents($url);

    preg_match_all(</span><span style="color:#800000;">'|<div class="wtline">(.*?)</div>|i'</span><span style="color:#000000;">, $info,&nbsp;$m2);

    $preg     = </span><span style="color:#800000;">"/</?1+>/i"</span><span style="color:#000000;">;

    $today&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;preg_replace($preg, </span><span style="color:#800000;">''</span><span style="color:#000000;">, $m2</span><span style="color:#ff0000;">0</span><span style="color:#000000;">);

    $tomorrow&nbsp;=&nbsp;preg_replace($preg, </span><span style="color:#800000;">''</span><span style="color:#000000;">, $m2</span><span style="color:#ff0000;">0</span><span style="color:#000000;">);

?></span></div></td></tr></table></div>

2、利用PHP发送邮件

这是用开源项目PHPMailer实现邮件发送。我这里下载得是5.1得版本,然后把三个class.*.php文件放到项目文件下,使用最新版死活连接失败。利用QQ邮箱测试通过,注意! 需要设置编码为GB2312! 我测试了半天中文都是乱码,说多了都是泪 ==、
PHPMailer5.1 点击下载附件

<!-- CoolFormat Source Formatter http://blog.csdn.net/akof1314 --><div style="width:100%;border:1px #e3e3e3 solid;"><div style="width:100%;font-family:'Consolas', 'Courier New';font-size:12px;border-bottom:1px solid #e3e3e3;margin-top:5px;color:#000000;"> PHP Code </div><table style="width:100%;font-family:'Consolas', 'Courier New';font-size:12px;vertical-align:text-top;line-height:15px;" border="0" cellspacing="0" cellpadding="0"><tr><td style="color:#008284;background-color:#e3e3e3;vertical-align:text-top;"><div style="margin:7px;text-align:right;white-space:nowrap;"><nobr>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
</nobr></div></td><td style="background-color:#008284;padding:1px;"><div style="border:1px #008284 solid;"></div></td><td style="background-color:#efefef;width:100%;vertical-align:text-top;color:#000000;"><div style="margin:7px;"><?php

    <span style="color:#0000ff;">require</span><span style="color:#000000;">(</span><span style="color:#800000;">"class.phpmailer.php"</span><span style="color:#000000;">); </span><span style="color:#008000;">//下载的文件必须放在该文件所在目录

</span><span style="color:#000000;">    $mail          = new PHPMailer(); </span><span style="color:#008000;">//建立邮件发送类

</span><span style="color:#000000;">    </span><span style="color:#008000;">// 这里指定字符集

</span><span style="color:#000000;">    $mail->CharSet = </span><span style="color:#800000;">"GB2312"</span><span style="color:#000000;">;

    $address       = </span><span style="color:#800000;">"133xxxxxxxx@189.cn"</span><span style="color:#000000;">;

    $mail->IsSMTP(); </span><span style="color:#008000;">// 使用SMTP方式发送

</span><span style="color:#000000;">    $mail->Host     = </span><span style="color:#800000;">"smtp.qq.com"</span><span style="color:#000000;">; </span><span style="color:#008000;">// 您的企业邮局域名

</span><span style="color:#000000;">    $mail->SMTPAuth = </span><span style="color:#0000ff;">true</span><span style="color:#000000;">; </span><span style="color:#008000;">// 启用SMTP验证功能

</span><span style="color:#000000;">    $mail->Username = </span><span style="color:#800000;">"1000@qq.com"</span><span style="color:#000000;">; </span><span style="color:#008000;">// 邮箱用户名(请填写完整的email地址)

</span><span style="color:#000000;">    $mail->Password = </span><span style="color:#800000;">"helloworld"</span><span style="color:#000000;">; </span><span style="color:#008000;">// 邮箱密码

</span><span style="color:#000000;">    $mail->Port     = </span><span style="color:#ff0000;">25</span><span style="color:#000000;">;

    $mail->From     = </span><span style="color:#800000;">"1000@qq.com"</span><span style="color:#000000;">; </span><span style="color:#008000;">//邮件发送者email地址

</span><span style="color:#000000;">    $mail->FromName = </span><span style="color:#800000;">"Bingo 友情提供"</span><span style="color:#000000;">;

    $mail-&gt;AddAddress(</span><span style="color:#800000;">"$address"</span><span style="color:#000000;">, </span><span style="color:#800000;">"b"</span><span style="color:#000000;">); </span><span style="color:#008000;">//收件人地址,可以替换成任何想要接收邮件的email信箱,格式是AddAddress("收件人email","收件人姓名")

</span><span style="color:#000000;">

    $mail->IsHTML(</span><span style="color:#0000ff;">true</span><span style="color:#000000;">); </span><span style="color:#008000;">// set email format to HTML //是否使用HTML格式

</span><span style="color:#000000;">    

    $url  = </span><span style="color:#800000;">'http://cache.xixik.com.cn/8/dalian/'</span><span style="color:#000000;">; </span><span style="color:#008000;">//这儿填页面地址

</span><span style="color:#000000;">    $info&nbsp;=&nbsp;file_get_contents($url);

    preg_match_all(</span><span style="color:#800000;">'|<div class="wtline">(.*?)</div>|i'</span><span style="color:#000000;">, $info,&nbsp;$m2);

    $preg     = </span><span style="color:#800000;">"/</?1+>/i"</span><span style="color:#000000;">;

    $today&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;preg_replace($preg, </span><span style="color:#800000;">''</span><span style="color:#000000;">, $m2</span><span style="color:#ff0000;">0</span><span style="color:#000000;">);

    $tomorrow&nbsp;=&nbsp;preg_replace($preg, </span><span style="color:#800000;">''</span><span style="color:#000000;">, $m2</span><span style="color:#ff0000;">0</span><span style="color:#000000;">);

    

    $mail-&gt;Subject&nbsp;=&nbsp;$tomorrow;

    $mail-&gt;Body&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;$info;

    

    date_default_timezone_set(</span><span style="color:#800000;">'Asia/Shanghai'</span><span style="color:#000000;">);

    </span><span style="color:#0000ff;">if</span><span style="color:#000000;"> (!$mail->Send()) {

        </span><span style="color:#0000ff;">echo</span><span style="color:#000000;"> date(</span><span style="color:#800000;">"Y-m-d H:i:s"</span><span style="color:#000000;">) . </span><span style="color:#800000;">" 邮件发送失败. <p>"</span><span style="color:#000000;">;

        </span><span style="color:#0000ff;">echo</span><span style="color:#000000;"> date(</span><span style="color:#800000;">"Y-m-d H:i:s"</span><span style="color:#000000;">) . </span><span style="color:#800000;">" 错误原因: "</span><span style="color:#000000;"> . $mail->ErrorInfo;

        </span><span style="color:#0000ff;">exit</span><span style="color:#000000;">;

    }

    </span><span style="color:#0000ff;">echo</span><span style="color:#000000;"> date(</span><span style="color:#800000;">"Y-m-d H:i:s"</span><span style="color:#000000;">) . </span><span style="color:#800000;">" 邮件发送成功"</span><span style="color:#000000;">;

?></span></div></td></tr></table></div>

发送邮件
send_mail.png

189邮箱正常接收
mail1.png
邮件正文
mail2.png

发送效率还是很高的,有时间为证。

3、邮箱设置邮件短信提醒
由于博主使用电信手机号,遂使用电信189邮箱短信提醒。使用移动联通的小伙伴自行设置短信提醒(很简单的啦,大同小异)
setting.jpg

看下手机端,嘿嘿。。。注意看时间,挺不错了,o(∩_∩)o 哈哈
sms.png

4、设置计划任务,自动执行

博主穷叼一枚,木有VPS,不过我有土豪朋友,哈哈~
将写好的代码上传,在VPS设定计划任务,定时执行就OK了。

  1. >

标签:折腾, 免费, 天气, php

已有 7 条评论

  1. 谢谢夸我土豪..... 正在写.

  2. 接客不着衣冠 接客不着衣冠

    博主,我有vps,但是不知道怎么放上去,定时任务?不会linux语法啊。。。可以给几个关键词吗,想google一下,然后在vps上挂博主的定时任务

    1. 用crontab就行

      1. 接客不着衣冠 接客不着衣冠

        谢谢博主提点,改天去学习,吾非至于子之门则殆矣!不知博主用的什么vps和域名

        1. DigitalOcean的VPS,右下角有连接。

  3. 么么哒 么么哒

    好牛b 可惜被qiang了

    1. 已经迁移回国内,目前在阿里云安家,速度很可以。

添加新评论