软件包大赏第12期 | SMTP软件包,让你的设备实现“书信往来”

小伙伴们,好久不见!不知不觉软件包栏目已经连载了11期,通过「软件包大赏」栏目大家也认识了不少来自社区的牛人,热爱探索的学生马龙伟/郭永超 、总是创意满满的留洋博士阿嘉、风趣幽默的“杀猪哥”,玄乎其神的吴博~(回看往期,请点击此处)受了他们的影响,有很多新朋友陆续参与到了软件包的贡献中。未来,我们的软件包大赏栏目,除了分享更多更高质量的软件包,谈谈这些软件包背后的“奇闻轶事”,还将增加软件包制作/使用专题访谈,欢迎大家的关注!

本期我们邀请到了SMTP_CLIENT软件包的贡献者——王君杰,下面就来听听他的故事。(获取软件包制作指南,请至☞文档中心☞代码贡献☞软件包开发)

Hi,我是WKJay

大家好,我叫王君杰,2019年毕业于河北工程大学的电子信息工程系,目前是一名嵌入式软件工程师。

你是如何与RT-Thread结缘的?

虽然今年刚毕业,但是我做嵌入式软件开发工作已有三年多,大二的时候加入了学校的智能车实验室,进行硬件电路与软件编程的学习,主攻摄像头数据处理、姿态平衡控制及电机、舵机控制。在这期间参加了多项赛事,且都取得了不错的成绩。当时编程还仅仅局限于裸机的编程,没有操作系统的概念,各种任务的调度以及中断的控制都十分繁琐,很多操作都需要自己从底层开始编写,网上的开源项目也由于没有一个统一的硬件平台需要花费大量的时间进行移植。但由于身居比赛前线,所以没有太多的时间去研究与学习。

到了大三之后,我作为智能车队队长开始带领新生,退居幕后也有了更多的时间去学习新的知识,这时候我便接触到了操作系统的概念,当时接触有UCOS和FreeRTOS,在使用了一段时间后发现其对任务的管理与调度非常强大,不用再创建一个个标志位,在中断中一个个去计算并且在主函数中一个个去判断,也不用担心各个任务之间冲突的情况。然而,仍有一个小小的瑕疵就是在移植代码时依然非常费劲,硬件的变更就导致代码的大幅修整。而这一切问题都在我遇到RT-Thread后迎刃而解。

大四时候的实习公司(也是我目前就任的公司)安排我学习RTT,这时候我才发现,RTT就是我一直以来追求的那个目标。RTT不仅仅是一个操作系统,它更是一个集成了底层操作系统、中层设备驱动以及上层应用软件的嵌入式开发平台。其强大的组件与驱动将不同硬件平台完全统一了起来,使上层应用真正做到不同硬件平台的无缝移植。与此同时,其独有的嵌入式软件包生态让开发者能够具备更强大、更灵活的开发能力,同时也能从优秀的软件包中学习到更多的编程知识与技巧。这也是我最爱RTT的部分,因此,我也积极参与到了软件包生态的建设中来。同时也希望越来越多的开发者入驻RT-Thread,共同为RTT的发展出一份力!

怎么会想到做这样一个软件包呢?

哈哈,这个就要从使用背景说起:

软件包使用背景:

随着物联网的迅速发展,越来越多的电子设备实现了智能化,从前都是人与人之间的交流,而如今更多的人希望自己的设备也能和自己进行“交流”。而最简单的交流方式,即通过“邮件交流”。SMTP即简单邮件传输协议,我们平时通过邮箱软件发送邮件就是基于这个协议。

 

本软件包基于嵌入式平台实现了SMTP协议,使设备能够自动给指定的收件人发送邮件。可用于电力监控、智能家居等领域。该软件包不仅支持普通的25端口,还支持465/587这两个加密端口,进一步拓宽使用场景。其使用方法也非常简单,使用者无需关注SMTP的具体实现,当你设置好一些基本参数后,仅需调用一个接口,便可实现邮件的发送!想与你的设备实现“书信往来”吗?那就赶快来试试这个软件包吧!

SMTP_CLIENT的使用

简介


这是一个基于RT-Thread的SMTP软件包,其支持普通的25端口,同时也支持465和587这两个加密端口。该软件包的使用非常简单方便,如果是基于RT-Thread操作系统,则无需进行任何移植操作即可使用,且仅需调用几个简单的接口即可实现不同端口的邮件发送功能。

特性


★支持25端口

★支持加密功能,支持465,587端口。(有些邮件服务器可能不支持其中的某个端口,用户使用前需了解自己所选用的邮件服务器支持哪个端口的smtp功能)

★使用简单,无需了解SMTP协议,设置好一些必要参数后仅需一个接口即可实现邮件发送。

软件包使用说明



准备工作

Env 配置说明

首先需要下载 SMTP_CLIENT 软件包,并将软件包加入到项目中。在 BSP 目录下使用 menuconfig 命令打开 Env 配置界面,在 RT-Thread online packages → IoT - internet of things 中选择 SMTP_CLIENT 软件包,具体路径如下:

1RT-Thread online packages
2    IoT - internet of things  --->
3         [*] smtp_client:smtp client package for rt-thread  --->
4                Version (latest) --->
5            [*] use 465/587 port(encrypted port)
6            [ ] enable debug log information
7                smtp_client Options --->
8                    [*] smtp client example

◢ Version: 配置软件版本

◢ use 465/587 port(encrypted port): 使用加密端口,选中后会将 mbedtls 软件包加入编译,同时开启 465和587 两个加密端口的支持。

◢ enable debug log information: 使能调试打印信息

◢ smtp client example: 加入示例文件

注意:加入示例文件后不能直接下载使用,默认示例中缺少SMTP的个人参数,需要用户补全自己的用户名密码及接收方邮箱等信息!

注意事项

◢ 开启加密功能后会占用比较大的RAM空间,请根据自己使用的硬件平台决定是否选用加密。并且适当调大调用发送功能的线程的堆栈大小。(推荐大于4096)

◢ 有些邮件服务器不支持某个加密端口或者默认关闭,使用者需要确认自己选用的邮件服务器所支持的端口,并且确认已经打开邮件服务器的SMTP功能。

◢ 若用户在使用的过程中出现加密有关的错误,请参照 RT-Thread mbedtls 软件包的说明文档。

使用说明


使用步骤

  1. 调用 smtp_clinet_init 函数初始化 smtp_client 客户端

  2. 调用 smtp_set_server_addr 函数设置服务器的地址及端口

  3. 调用 smtp_set_auth 函数设置服务器认证信息

  4. 调用 smtp_send_mail 函数发送邮件

API详解

1、初始化SMTP客户端

1void smtp_clinet_init(void);

该函数主要用于初始化 smtp 会话结构。

2、设置SMTP服务器地址及端口

1int smtp_set_server_addr(const char *server_addr, uint8_t addr_type, const char *port);

该函数用于设置 smtp 服务器地址及端口,地址类型为域名类型和IP类型,分别对应宏 ADDRESS_TYPE_DOMAIN 与 ADDRESS_TYPE_IP .需要注意的是,由于时间仓促及其需求不是很大,目前仅支持域名连接,但如果有需求,在后续版本中会加入IP连接。当然程序中已预留接口,需求紧的用户可使用接口进行拓展。

3、设置 smtp 服务器认证信息
1int smtp_set_auth(const char *username, const char *password);

该函数用于设置 smtp 服务器的认证信息,需要注意有些服务器需要用 凭据 而非用户登录邮箱时的密码进行认证,用户在连接服务器时需要确认自己所用服务器的认证方式。

4、发送邮件
1int smtp_send_mail(char *from, char *to, char *subject, char *body);

该函数为邮件发送函数,在用户设置好服务器的连接参数后,可以直接调用该函数进行邮件的发送。需要注意的是,发送者邮箱地址必须和登录用户名相同。

宏配置说明


若用户在使用过程中发现默认的配置无法满足自身的使用需求,用户可以进入 smtp_client_private.h 文件对相关宏定义参数进行配置:

一般情况下,用户需要根据自己内容的大小对 SMTP_SEND_DATA_MAX_LEN 进行配置即可。

若在使用过程中有任何问题,请与作者取得联系:email: 1931048074@qq.com同时欢迎大家参与到该软件包的开发与维护中来,共同创建一个更加完善、稳定的软件包。主页:https://github.com/WKJay/SMTP_CLIENT

END

RT-Thread线上活动

1、RT-Thread软件包应用开发赛】本次大赛的唯一要求就是在作品中使用RT-Thread及软件包开发相关应用,不限定硬件平台,自备硬件,代码和文档开源。共设18名奖励,一等奖还可获得价值3499元的RoboMaster S1一台!报名参赛请先仔细阅读以下参赛须知(点击即可跳转):

重磅!参加RT-Thread软件包应用开发赛,赢RoboMaster S1!

立即报名

2、RT-Thread能力认证考前线上培训,将于2019年10月21号正式开始,如果您有晋升、求职、寻找更好机会的需要,有深入学习和掌握RT-Thread的需求,请尽快垂询/报考!学生优惠价:168/人 

学生专属报名通道

能力认证官网链接:https://www.rt-thread.org/page/rac.html(在外部浏览器打开)

立即报名(非学生)

#题外话# 喜欢RT-Thread不要忘了在GitHub上留下你的STAR哦,你的star对我们来说非常重要!链接地址:https://github.com/RT-Thread/rt-thread

你可以添加微信17775983565为好友,注明:公司+姓名,拉进 RT-Thread 官方微信交流群

RT-Thread


让物联网终端的开发变得简单、快速,芯片的价值得到最大化发挥。Apache2.0协议,可免费在商业产品中使用,不需要公布源码,无潜在商业风险。

长按二维码,关注我们

点击“阅读原文”进入GitHub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值