使用PHP免费发送定时短信

2012 年 11 月 25 日7850

   

使用PHP免费发送定时短信

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

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

解决:

免费发送短信到手机

方案1:使用飞信API

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

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

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

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

举例:调用免费API

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

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

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

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





    <?开发php

    $mail=newSaeMail();

    $ret=$mail->quickSend(

    '收件人@139.com',

    '这是主题',

    '这是正文',

    '这是发件人邮箱',

    '这是发件人密码',

    '这是smtp服务host',

    [这是smpt服务端口]);

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

    if($ret===false)

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

    ?>

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

效果如下:

\

\

定时发送功能

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

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

增加Cron





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

    name:saetest

    version:1

    cron:

    -description:crontest

    url:mycron/test.开发php

    schedule:$2dayofoctober19:00

    timezone:Beijing

    -description:anothercrontest

    url:mycron/another_test.开发php

    schedule:every10mins

    timezone:Beijing

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

PHP天气抓取

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

实现效果图

\

\

\

0 0