使用PHP免費發(fā)送定時短信
使用PHP免費發(fā)送定時短信
背景:老媽年紀大了,文化程度不高,但是需要每天了解天氣信息才能下地工作,也就無法通過網(wǎng)絡獲取天氣,只能通過電視。于是尋思著自己抓取網(wǎng)絡上的天氣信息,通過手機短信發(fā)送給老媽。
問題:自己不可能每天定時給老媽發(fā)送天氣短信,現(xiàn)有的天氣預報訂閱短信又是要錢的。
解決:
免費發(fā)送短信到手機
方案1:使用飛信API
由于飛信目前沒有開發(fā)平臺,現(xiàn)有API都是第三方開發(fā),貌似是通過破解WAP飛信或者3G飛信,模擬瀏覽器的行為來發(fā)短信。另外Google code上有開源的php飛信發(fā)送類php-fetion(http://code.google.com/p/php-fetion/)。這些飛信接口方便了定時短信的開發(fā)。
唯一的缺點就是第三方的API不穩(wěn)定,也有飛信賬號泄露的風險。
此處,我使用http://3.ibtf.sinaapp.com/提供的飛信API進行短信發(fā)送。該站本身掛在新浪SAE上,源代碼可以在http://www.oschina.net/code/snippet_202258_9754找到(里面提供下載地址)。
該API只需提供發(fā)送者手機號,密碼,接受者手機號,消息內容作為url參數(shù)即可。唯一需要注意的是中文的亂碼問題(使用gbk而不是utf-8編碼,直接輸入中文亂碼,輸入中文的gbk編碼手機接收正常),可以使用iconv函數(shù)或者加上參數(shù)”&u=1”解決。
舉例:調用免費API
http://2.ibtf.sinaapp.com/?phone=手機號&pwd=飛信密碼&to=接收手機號(必須為飛信好友或自己的手機號)&msg=消息內容&u=1(解決亂碼問題)
方案2:使用139郵箱的短信提醒功能
139郵箱也是中國移動的一項業(yè)務,提供了郵件短信提醒的功能。只要在郵箱里面設置郵件到達通知就OK了,除了彩信,其他的長短信,普通短信,免提短信都是免費的。注意,時間久了,發(fā)件箱和收件箱都要清除一下,以免占用過多空間而影響正常使用。
另外,只需要編寫一個簡單的郵件發(fā)送的php腳本。而新浪SAE也提供了此Mail服務。使用Mail服務里的函數(shù),可以快速發(fā)送郵件,代碼如下:
- <?php
- $mail = new SaeMail();
- $ret = $mail->quickSend(
- '收件人@139.com' ,
- '這是主題' ,
- '這是正文' ,
- '這是發(fā)件人郵箱' ,
- '這是發(fā)件人密碼' ,
- '這是smtp服務host' ,
- [這是smpt服務端口] );
- //發(fā)送失敗時輸出錯誤碼和錯誤信息
- if ($ret === false)
- var_dump($mail->errno(),$mail->errmsg());
- ?>
詳細信息請參考Mail服務API文檔http://apidoc.sinaapp.com/sae/SaeMail.html。
效果如下:
定時發(fā)送功能
短信成功發(fā)送后,就需要定時了。還好新浪SAE提供了Cron服務。Cron服務是SAE為開發(fā)者提供的分布式定時服務,用來定時觸發(fā)開發(fā)者的特定動作,滿足比如定時計算排行榜等需求。Cron的設置是通過App的config.yaml來實現(xiàn)的,只要用戶在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點執(zhí)行mycron/test.php;每隔10分鐘執(zhí)行mycron/another_test.php
PHP天氣抓取
網(wǎng)上有很多地方提供天氣信息的,比如新浪,中國天氣網(wǎng)等,也有相關API和開源的代碼。這個比較簡單就不細說了。當然上面提到的飛信API站點http://3.ibtf.sinaapp.com/的源碼里也有關于天氣抓取的代碼,可以借鑒。
實現(xiàn)效果圖
原文鏈接:http://blog.csdn.net/xiangshimoni/article/details/7833593