Archive for September, 2010

September 5th, 2010

如何监听飞信消息并转发为邮件

  本文适用于满足以下条件的读者:日常使用的是电信或者联通的手机,没有移动手机号,并且重度依赖邮件,或者手机终端支持email/push的同学(android和iphone最给力了)。

  众所周知,飞信是中国移动旗下一款超级得力的产品,平时有个班长通知什么的,很多都是使用飞信来通知的,方便、及时,而且对方不在线的话可以直接发送到移动手机上,甚至阿土伯说现在小学生的老师发个作业要求什么的都用飞信发给家长。这一点曾经让我等电信/联通用户困扰不已,现在好了,levin同学写了一个开源的基于GTK+2.0的ofetion,我使用他的fetion库写了一个命令行下的监听飞信消息并且转发邮件的小工具。

  思路很简单,无非就是先登录验证用户名密码(视情况决定是否需要加挂http代理),然后起一个进程,每隔180s向移动的飞信服务器发送一个keep alive的包,另外主进程实时来监控是否接收到新的消息。如果有新的消息过来,则判断其消息类型,剔除掉ACK等系统消息,将真正的飞信消息通过sendmail发送邮件给指定地址。有一点需要注意,一旦接收到这种真正的飞信消息时,需要发出一个ACK包,以确认自己收到,不然对方的客户端会认为这边未收到消息,然后显示发送不成功。

  因为levin同学写的代码可读性比较强,所以我修改的时候没有遇到太多麻烦。下周开始自己和给阿土伯试用,哈哈,这回再也不怕没法收班长通知了。

[UPDATE 2010/12/09]:谢谢同学们关注,我把基于openfetion 2.0.2版的openfetion-notify代码托管在github的这里了,有需要的同学自己去试试吧,已经能正常工作,但是还非常ugly,希望能有时间改改。最近太忙了,Sigh。

Tags: