前段时间看到一个php的飞信模拟接口,可以实现免费短信发送,所以我就将其拿来做了个自己用的API。
前一段时间由于各种事务的繁忙,我几乎没有什么时间来查邮件,现在趁着这几天难得的假,我就写了一段用Ruby的Mechanize来获取Gmail或Google Apps Mail的代码。
这种模拟登录抓取网页内容的程序写出来就是比较乱,写注释以后自己都不一定记得,呵呵。
前期写模拟抓取网页和登录的时候还算顺利,但是抓取到的信息就是死活发不出去。(我用的是一个web接口,实际发短信部分是用php实现的,不是我写的,但我忘了是从哪里拿来的了,原作者看到请联系我。)
经过调查发现原来得到的信息不是纯的UTF-8编码,必须要转成纯UTF-8的形式才能顺利在手机端被识别。代码如下:
require 'rubygems' require 'mechanize' require 'iconv' def check(address,email,passwd,phone,phonepw) agent = WWW::Mechanize.new agent.user_agent = 'Opera Mini' agent.follow_meta_refresh = true page = agent.get address form = page.forms.first form.Email = email form.Passwd = passwd page = agent.submit form #login tmp = [] page.body.scan(/<b>(.*)</){|str| tmp.push(Iconv.conv('UTF-8//IGNORE', 'UTF-8', str[0][0..-5]))} #get new email and push them in to tmp after encode it in to pure UTF-8 tmp.delete_at(-1) #delete extra shit msg = [] exit if tmp.size ==0 #exit if theres none for i in 0..tmp.size/2-1 #form messages msg.push("#{tmp[i*2][0..-2]}--#{tmp[i*2+1]}") end page.links[0..(msg.size-1)].each{|l| l.click} #click those new links to make it as read for t in msg #send each page = agent.get('http://x.rookee.net') form = page.forms.first form.pn = phone form.pw = phonepw form.to = phone form.msg = t page = agent.submit form end end
用法实例:
check('http://mail.google.com/','你的邮件地址','你的密码','移动手机号','飞信密码')
PS:其实一开始我准备用rfetion来做(rfetion是一个Ruby的飞信接口,很不错),但是不知道为什么收到的短信总是不全。所以就改用了php的接口。


回复自“用Ruby做的Gmail新邮件提醒”
发表回复