用libfetion发短信

fetion 是中国移动推出的即使通讯工具,集成了自家短信功能,利用飞信可以方便给自己的好友发短信,而且还是免费的。

libfetion是国内邓东东的项目,目标原本是为飞信提供免费、开源的协议库,;不过当前短信群发遭到打压,不少短信接口被封,作者也有所顾虑,对项目采取了谨慎的态度,比如:
1. 不公开源码
2. 在windows上,作者甚至不提供连接库,基本上无法二次开发;
3. 在linux上,提供32位和64位连接库, 对二次开发影响不是很大;


本文只是提供一个用libfetion发短信的简单示例,但麻雀虽小,五脏俱全。

1 . 下载 http://libfetion-gui.googlecode.com/files/linux_fetion_0.9.3.tar.gz, 并解压, 提取二次开发需要的头文件、连接库
   mkdir /tmp/sms
   cd /tmp/sms
   mkdir example
   wget http://libfetion-gui.googlecode.com/files/linux_fetion_0.9.3.tar.gz
   tar zxvf linux_fetion_0.9.3.tar.gz
   cp linux_fetion_0.9.3/libfetion example/ -r
   cp linux_fetion_0.9.3/lib example/ -r
   cd example

2.  书写源代码
    vi test.cpp

#include <stdio.h>
#include <stdlib.h>
#include "libfetion/libfetion.h"

int main()
{
    //init the libfetion frist
    if (!fx_init())
    {
        fprintf(stderr, "init the app fail ");
        exit(0);
    }

    //login the fetion
    //飞信 用户名和密码
    if(!fs_login("1386424016x", "xxxxxxx"))
    {
        fprintf(stderr, "login fail ");
        exit(0);
    }

     //发送短信
     //fs_send_sms_to_self("你好吗");

     if(!fs_send_sms_by_mobile_no("1386424016x", "你好吗"))
     {
           fprintf(stderr, "send fail ");       
     }

   
    //login out ....
    fx_loginout();

    //destroy the libfetion
    fx_terminate();
}

3. 编译
   gcc test.cpp lib/libfetion_64.a -I "./" -lstdc++ -lcurl -lssl -pthread

4. 执行测试
   ./a.out



至此, 这个小小的程序已经具有发短信的功能了。对照网上其他的资源,以下几点需要注意:
1.  有人说libfetion不支持直接对手机号发短信, 这是错误的。大家可以看看开发文档,fs_send_sms_by_mobile_no 就是实现此功能的函数;
2. linux_fetion_0.9.3 的连接库在某些平台上可以存在问题,提示lib/libfetion_64.a: file not recognized: File format not recognized, 可以试一下低版本的,比如 0.9.2
3.  libfetion只能给飞信上的好友发短信;
4. 把此功能用于系统报警等,十分的爽,免费, 而且延迟比较小......


Categories