美文网首页让前端飞Web前端之路程序员
闲聊c/c++: vs2015编译libquickmail C语

闲聊c/c++: vs2015编译libquickmail C语

作者: 随风而行之青衫磊落险峰行 | 来源:发表于2017-08-24 10:24 被阅读177次
    雷达邮件发送-0-7.gif

    gif导出设置纵横比没设好,有变形

    本篇目的:

    • 编译c语言版本的邮件发送库(无CURL/SSL库支持)

    原本今天是要轮到闲聊js 2D 引擎篇,但是等会要去见个客户,需要出去一下,就从我的储备中找一篇文章发出来,尽量不开天窗!

    原本都是晚上写文章,上午发文。昨晚我拍了个视频,没写文,所以就从我的储备中找一篇相对完整的文章发布。

    几点说明:

    • 我储备的文章的完整性都不强,是我每次做一件我认为比较有用的事情时的记录,因此很多都是提纲,记录了要点,却没有记录细节,本来是我修改完善后再发文的。今天来不及了,就江湖救急而已!简书的markdown成为我的在线要点记录本了,蛮好用的!

    • 从上个月7-25日开始,到今天8-24日,基本每天一篇文章。每个晚上,我都花将近2-3小时来写文章。目前来说,感觉习惯了,蛮好玩的!有些文章不是很好写,需要推敲,而且正确性也不能保证,所以有问题,可以留言。

    • 本篇因为并不是很重要,主要精华在下篇中,因此在本文下篇中,会详细给出带curl ssl 支持的邮件发送库的详细编译和使用方法。

    为了我的c++服务器demo,需要发送电子邮件。感觉libquickmail库满适合我的需求,因此编译libquickmail。现记录下编译过程以及相关说明!

    1.下载地址: libquickmail

    2. 解压后源文件说明:

    3. 编译宏: NOCURL(编译不使用curl的邮件发送程序)

    4. 可以编译的类型以及对应的编译宏:

    • DLL 动态链接库 BUILD_QUICKMAIL_DLL
    • EXE 应用程序 STATIC或BUILD_QUICKMAIL_STATIC
    • LIB 静态链接库 CURL_STATICLIB或没有定义任何编译宏

    5. 编译中的错误处理

    _CRT_SECURE_NO_WARNINGS
    _SCL_SECURE_NO_WARNINGS
    _WINSOCK_DEPRECATED_NO_WARNINGS

    6. 使用qq邮箱测试,必须要获取qq邮箱的AccessToken(如何获取qq邮箱的AccessToken,需要演示)

    7. 测试代码(使用qq邮箱)

        int ret = -1;
        quickmail mailobj;
        ret = quickmail_initialize();
        mailobj = quickmail_create(NULL, NULL);
        quickmail_set_from(mailobj, "47178234@qq.com");
        quickmail_add_to(mailobj, "47178234@qq.com");
        quickmail_set_subject(mailobj, "blf email test from c++");
        const char* msg = quickmail_send_secure(mailobj, "smtp.qq.com", 465, "47178234@qq.com", "用你的qq邮箱token,机密码,很重要,不能泄露!!");
        if (msg)
            printf("%s\n", msg);
        quickmail_destroy(mailobj);
        ret = quickmail_cleanup();
    

    8. 令人遗憾的测试结果:

    smtps不支持.png

    9. 这是因为腾讯邮箱使用SMTPS协议(相当于https)。而NOCURL版本的libquickmail只支持SMTP格式(相当于http)。他们之间相差一个openssl库的距离.....

    10. 下一篇我们来编译curl库以及libquickmail,完美解决SMTPS问题!(ubuntu/raspberryPI/ios/android等系统都可以编译)

    附:
    c/c++特点:
    跨平台,跨语言,一次编写,到处编译,各地运行

    • 上面demo使用了libquickmail,实际上我实现了三个版本的服务器

    • 使用c++服务器,libquickmail本身是c语言,很完美,效率极高。在ubuntu/raspberryPI/windows上完美运行

    • 使用nodejs服务器,libquickmail通过gyp构建,让nodejs调用c/c++代码,运行在ubuntu/raspberryPI/windows上

    • python版服务器,目前部分运行,与c/c++交互部分还没弄

    • 整个程序分为三部分(全部可以远程wifi控制,传说中的物联网,所有一切都在一张网之内):
      服务器(c/c++ nodejs python版 restful api + websocket)
      客户端(html5 js canvas2d/webgl)
      嵌入式(arduino nano with c/c++)

    gif演示使用了nodejs+socket.io+gyp构建的 c/c++ email

    【c/c++中gyp cmake这两个构建系统一定要学会,这样才能走遍天下都不怕,例如android ndk中,需要使用cmake来进行构建和编译,现在cmake非常流行,真的好用啊!】

    完美演绎c/c++的跨平台,跨语言,一次编写,到处编译,各地运行的强大特点!!!!

    其实这个demo是为了我一篇文章:为什么要学点c/c++
    写了好几个月,还没写好,是因为我花了很多时间做demo,和研究对比,提炼重点(我文笔不行,但是尽量说清楚)

    为了这篇《为什么要学点c/c++》文章,我在各个平台编译了大量的跨平台的c/c++库
    例如世界三大js引擎:
    ms chakra-core/google v8 / mozilla spidemonkey
    js是我非常看好的一门语言,关于js各个引擎与c/c++的互调我是非常清晰明白的,我个人其实最喜欢chakra-core,很漂亮的api。v8编译静态库超过2g,链接一次花三分钟,实在可怕,而动态链接库版在windows下我无法编译出来

    渲染引擎:
    google skia / cario / nanovg
    各种基本库:
    多了去了,都是经典的libXXXX,每个平台必备的库

    开发周记(2017/3/26-2017/4/2)

    开发周记(2017/4/3-2017/4/9)

    开发周记(2017/4/10-2017/4/16)

    开发周记(2017/4/24-2017/5/1)

    这几篇开发周记记录了我编译上面这些庞大库的流程

    OAuth2.0实战1(分析简书的微信登陆及实现)
    这篇是关于微信oauth2.0授权相关内容,如果开发微信,第一关就是授权,以前我不是很明白的时候,走了很多弯路,一言难尽,倾力奉献!

    最后来张宝贝图:


    我的宝贝们.jpg

    最小那块是工业级别芯片中的明星: esp8266,自带wifi透传功能,国内外多少人为他疯狂。中国的科技企业研发的,享誉世界,目前推出esp32(手掌中中间那块芯片),更是强大无比,自带wifi和蓝牙,足够的小,能耗低。我也算是一直追踪技术的发展。

    掌控c/c++,就是掌控未来
    (我后续会写很多c/c++文章,为推广c/c++做点个人小贡献)

    相关文章

      网友评论

        本文标题:闲聊c/c++: vs2015编译libquickmail C语

        本文链接:https://www.haomeiwen.com/subject/qjssdxtx.html