闲聊c/c++: vs2015编译libquickmail C语
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不支持.png9. 这是因为腾讯邮箱使用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,每个平台必备的库
这几篇开发周记记录了我编译上面这些庞大库的流程
OAuth2.0实战1(分析简书的微信登陆及实现)
这篇是关于微信oauth2.0授权相关内容,如果开发微信,第一关就是授权,以前我不是很明白的时候,走了很多弯路,一言难尽,倾力奉献!
最后来张宝贝图:
我的宝贝们.jpg
最小那块是工业级别芯片中的明星: esp8266,自带wifi透传功能,国内外多少人为他疯狂。中国的科技企业研发的,享誉世界,目前推出esp32(手掌中中间那块芯片),更是强大无比,自带wifi和蓝牙,足够的小,能耗低。我也算是一直追踪技术的发展。
掌控c/c++,就是掌控未来
(我后续会写很多c/c++文章,为推广c/c++做点个人小贡献)