设为首页 收藏本站
查看: 616|回复: 0

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

[复制链接]

尚未签到

发表于 2017-4-13 07:40:36 | 显示全部楼层 |阅读模式
  使用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服务里的函数,可以快速发送邮件,代码如下:
  <?php
  $mail = new SaeMail();
  $ret = $mail->quickSend(
  '收件人@139.com' ,
  '这是主题' ,
  '这是正文' ,
  '这是发件人邮箱' ,
  '这是发件人密码' ,
  '这是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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-364136-1-1.html 上篇帖子: 【转】PHP编程过程中需要了解的this,self,parent的区别 下篇帖子: IOS推送消息,PHP作为推送服务器进行分批推送
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表