Heim >Backend-Entwicklung >PHP-Tutorial >运用PhP免费发送定时短信(用于天气预报、定时提醒、短信祝福等等)

运用PhP免费发送定时短信(用于天气预报、定时提醒、短信祝福等等)

WBOY
WBOYOriginal
2016-06-13 10:36:521539Durchsuche

使用PhP免费发送定时短信(用于天气预报、定时提醒、短信祝福等等)

使用PhP免费发送定时短信

 

背景:老妈年纪大了,文化程度不高,但是需要每天了解天气信息才能下地工作,也就无法通过网络获取天气,只能通过电视。于是寻思着自己抓取网络上的天气信息,通过手机短信发送给老妈。

问题:自己不可能每天定时给老妈发送天气短信,现有的天气预报订阅短信又是要钱的。

解决:

  •  免费发送短信到手机

         方案1:使用飞信API

         由于飞信目前没有开发平台,现有API都是第三方开发,貌似是通过破解WAP飞信或者3G飞信,模拟浏览器的行为来发短信。另外Google code上有开源的php飞信发送类php-fetion(http://code.google.com/p/php-fetion/)。这些飞信接口方便了定时短信的开发。

         唯一的缺点就是第三方的API不稳定,也有飞信账号泄露的风险。

         此处,我使用http://3.ibtf.sinaapp.com/提供的飞信API进行短信发送。该站本身挂在新浪SAE上,源代码可以在http://www.oschina.net/code/snippet_202258_9754找到(里面提供下载地址)。

         该API只需提供发送者手机号,密码,接受者手机号,消息内容作为url参数即可。唯一需要注意的是中文的乱码问题(使用gbk而不是utf-8编码,直接输入中文乱码,输入中文的gbk编码手机接收正常),可以使用iconv函数或者加上参数”&u=1”解决。

         举例:调用免费API

http://2.ibtf.sinaapp.com/?phone=手机号&pwd=飞信密码&to=接收手机号(必须为飞信好友或自己的手机号)&msg=消息内容&u=1(解决乱码问题)     

        

         方案2:使用139邮箱的短信提醒功能

         139邮箱也是中国移动的一项业务,提供了邮件短信提醒的功能。只要在邮箱里面设置邮件到达通知就OK了,除了彩信,其他的长短信,普通短信,免提短信都是免费的。注意,时间久了,发件箱和收件箱都要清除一下,以免占用过多空间而影响正常使用。

另外,只需要编写一个简单的邮件发送的php脚本。而新浪SAE也提供了此Mail服务。使用Mail服务里的函数,可以快速发送邮件,代码如下:

$mail = new SaeMail();

$ret = $mail->quickSend(

[email protected]' ,

'这是主题' ,

'这是正文' ,

'这是发件人邮箱' ,

'这是发件人密码' ,

'这是smtp服务host' ,

[这是smpt服务端口] );

 

//发送失败时输出错误码和错误信息

if ($ret === false)

var_dump($mail->errno(),$mail->errmsg());

?>

详细信息请参考Mail服务API文档http://apidoc.sinaapp.com/sae/SaeMail.html。

效果如下:

 



  •  定时发送功能

短信成功发送后,就需要定时了。还好新浪SAE提供了Cron服务。Cron服务是SAE为开发者提供的分布式定时服务,用来定时触发开发者的特定动作,满足比如定时计算排行榜等需求。Cron的设置是通过App的config.yaml来实现的,只要用户在App目录下的config.yaml里按照我们的提供的语法格式进行配置,部署后就能生效。

举例:详细教程参考API文档http://sae.sina.com.cn/?m=devcenter&catId=195

增加Cron

   编辑saetest/1/config.yaml,增加cron段,config.yaml示例如下:

   name: saetest

   version: 1

   cron:

        - description: cron test

        url: mycron/test.php

        schedule: $2 day of october 19:00

        timezone: Beijing

        - description: another cron test

        url: mycron/another_test.php

        schedule: every 10 mins

        timezone: Beijing

    上面的示例描述了两个定时任务:每年10月2日19点执行mycron/test.php;每隔10分钟执行mycron/another_test.php

  • PHP天气抓取

网上有很多地方提供天气信息的,比如新浪,中国天气网等,也有相关API和开源的代码。这个比较简单就不细说了。当然上面提到的飞信API站点http://3.ibtf.sinaapp.com/的源码里也有关于天气抓取的代码,可以借鉴。

  •  实现效果图




1楼jaylongli5小时前
其实有软件自带天气通知功能的,比如飞信就可以设置定时天气通知。
Re: xiangshimoni3小时前
回复jaylonglin好像是企业版的功能吧,要收费
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn