【网络通信】10分钟教会你如何配置Lwip中的Smtp功能

手把手教你用STM32发送带附件的邮件 (二、邮件功能实现) 上节回顾 上一小节中我们使用正点原子的潘多拉开发板与RT-Thread 的 IoT Board SDK,并使用 RT-Thred Studio 成功运行了wifi例程,涉及到以下几个知识点: 1. 如何使用 RT-Thread Studio 导入MDK工程。 2. 如何配置 RT-Thread Studio 的工程参数(头文件、库文件、链接文件)。 3. 如何使用 RT-Thread Studio 创建一个原生的 RT-Thread Studio 工程。 4. 如何使用RT-Thread ... 阅读详情

💌 所属专栏:【网络通信】
😀 作  者:兰舟比特 🐾
🚀 个人简介:热爱开源系统与嵌入式技术,专注 Linux、网络通信、编程技巧、面试总结与软件工具分享,持续输出实用干货!
💡 欢迎大家:这里是兰舟比特的技术小站,喜欢的话请点赞、收藏、评论三连击!有问题欢迎留言交流😘😘😘


本篇博客主要介绍的Lwip中的Smtp功能,以及如何配置使用和有哪些需要注意的地方,希望对你有帮助。


一、📦 什么是 LwipSmtp?

LwipSmtp 是一个基于 LwIP(Lightweight IP)协议栈 的轻量级 SMTP 客户端库,专为嵌入式系统设计,用于在资源受限的设备上实现通过以太网或 Wi-Fi 发送电子邮件的功能。

它通常用于如 STM32、ESP32 等嵌入式平台,结合 LwIP 实现联网功能后,可让设备主动发送邮件通知、报警信息、日志报告等。


二、🔧 主要功能

  • ✅ 支持标准 SMTP 协议
  • ✅ 支持加密连接(SSL/TLS)
  • ✅ 可设置邮件主题、正文、收件人等
  • ✅ 支持附件发送(视具体实现而定)
  • ✅ 轻量高效,适合嵌入式系统使用
  • ✅ 提供回调函数机制处理发送状态

三、📌 典型应用场景

  • 工业监控系统:设备故障自动发送邮件报警
  • 智能家居:发送状态变更通知
  • 远程数据采集:定时发送数据报告
  • 嵌入式日志系统:异常时发送错误日志

四、🧩 使用流程(伪代码)

// 初始化 LwIP 栈
lwip_init();

// 设置 SMTP 服务器域名
smtp_set_server_addr("smtp.example.com");

// 设置Smtp服务用户名和smtp服务器密码
smtp_set_auth("user@example.com", "your_password_or_token");

// 设置发件人、收件人、主题、内容
smtp_mailto("from@example.com", "to@example.com");
smtp_set_subject("System Alert");
smtp_set_body("This is an alert from your embedded device.");

// 发送邮件
smtp_send();

五、 📚 注意事项

> 1.编译库以及使用时需要lwipopts.h中包含以下三个宏定义。 			
> #define LWIP_ALTCP                      1
> #define LWIP_ALTCP_TLS                  1
> #define LWIP_DNS                        1
2.如果使用的是163等之类的邮箱(如下图)
> 登录163邮箱网页版 (mail.163.com)
> 点击右上角"设置" -> "POP3/SMTP/IMAP"
> 开启"SMTP服务"
> 按提示设置授权码(通常是16位字符)
> 替换上面的smtp服务器密码

此图是163网站打开smtp服务的截图


📎 特点总结

特性描述
轻量级内存占用低,适合嵌入式平台
易集成接口简单,易于移植到不同平台
功能完整支持基本邮件发送功能
可扩展可自行添加附件、HTML 内容等功能

💡 注意事项

  • 使用前需确保 LwIP 网络栈已正确初始化并联网。
  • 若使用 Gmail、QQ邮箱等服务,需开启 SMTP 并获取授权码。
  • 加密支持(TLS/SSL)可能需要额外的库(如 mbedTLS)配合使用。

版权声明:

本文为 兰舟比特 原创内容,如需转载,请注明出处及作者,禁止未经授权的引用或商用。

lwIP - 轻量型嵌入式 TCP/IP协议栈 2024年10月3日11:53:29 lwIP-version-1.4.1。 阅读详情

相关推荐

【嵌入式软件】LWIP 以太网通信

1)应用层:为上层用户提供应用的接口。常用的应用层的网络协议有:HTTP、FTP、TFTP、SMTP、SNMP、DNS、TELNET、HTTPS、POP3、DHCP2)表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据格式转换成通信中采用的标准表示形式。数据压缩/解压缩和加密/解密(提供网络的安全性)也是表示层可提供的功能之一。

qq_39200110的博客 438

lwIP更新记05:核心应用文件移动

从 lwIP-2.0.0 开始,lwIP 开发者将一些核心应用从 `contrib` 仓库移动到 `lwIP` 仓库的 `src/apps` 文件夹。 对比版本 `lwIP-1.4.1` 和 `lwIP-2.1.2` 的 `src` 文件夹内容,可以发现 `lwIP 2.1.2` 版本多了一个 `apps` 文件夹。

朱工的专栏 1465

lwip源码(小型TCP/IP协议栈)

INTRODUCTION lwIP is a small independent implementation of the TCP/IP protocol suite. The focus of the lwIP TCP/IP implementation is to reduce the RAM usage while still having a full scale TCP. This making lwIP suitable for use in embedded systems with tens of kilobytes of free RAM and room for around 40 kilobytes of code ROM. lwIP was originally developed by Adam Dunkels at the Computer and Networks Architectures (CNA) lab at the Swedish Institute of Computer Science (SICS) and is now developed and maintained by a worldwide network of developers. FEATURES * IP (Internet Protocol, IPv4 and IPv6) including packet forwarding over multiple network interfaces * ICMP (Internet Control Message Protocol) for network maintenance and debugging * IGMP (Internet Group Management Protocol) for multicast traffic management * MLD (Multicast listener discovery for IPv6). Aims to be compliant with RFC 2710. No support for MLDv2 * ND (Neighbor discovery and stateless address autoconfiguration for IPv6). Aims to be compliant with RFC 4861 (Neighbor discovery) and RFC 4862 (Address autoconfiguration) * DHCP, AutoIP/APIPA (Zeroconf), ACD (Address Conflict Detection) and (stateless) DHCPv6 * UDP (User Datagram Protocol) including experimental UDP-lite extensions * TCP (Transmission Control Protocol) with congestion control, RTT estimation fast recovery/fast retransmit and sending SACKs * raw/native API for enhanced performance * Optional Berkeley-like socket API * TLS: optional layered TCP ("altcp") for nearly transparent TLS for any TCP-based protocol (ported to mbedTLS) (see changelog for more info) * PPPoS and PPPoE (Point-to-point protocol over Serial/Ethernet) * DNS (Domain name resolver incl. mDNS) * 6LoWPAN (via IEEE 802.15.4, BLE or ZEP) APPLICATIONS * HTTP server with SSI and CGI (HTTPS via altcp) * SNMPv2c agent with MIB compiler (Simple Network Management Protocol), v3 via altcp * SNTP (Simple network time protocol) * NetBIOS name service responder * MDNS (Multicast DNS) responder * iPerf server implementation * MQTT client (TLS support via altcp) LICENSE lwIP is freely available under a BSD license. DEVELOPMENT lwIP has grown into an excellent TCP/IP stack for embedded devices, and developers using the stack often submit bug fixes, improvements, and additions to the stack to further increase its usefulness. Development of lwIP is hosted on Savannah, a central point for software development, maintenance and distribution. Everyone can help improve lwIP by use of Savannah's interface, Git and the mailing list. A core team of developers will commit changes to the Git source tree. The lwIP TCP/IP stack is maintained in the 'lwip' Git module and contributions (such as platform ports) are in the 'contrib' Git module. See doc/savannah.txt for details on Git server access for users and developers. The current Git trees are web-browsable: http://git.savannah.gnu.org/cgit/lwip.git http://git.savannah.gnu.org/cgit/lwip/lwip-contrib.git Submit patches and bugs via the lwIP project page: http://savannah.nongnu.org/projects/lwip/ Continuous integration builds (GCC, clang): https://travis-ci.org/lwip-tcpip/lwip DOCUMENTATION Self documentation of the source code is regularly extracted from the current Git sources and is available from this web page: http://www.nongnu.org/lwip/ Also, there are mailing lists you can subscribe at http://savannah.nongnu.org/mail/?group=lwip plus searchable archives: http://lists.nongnu.org/archive/html/lwip-users/ http://lists.nongnu.org/archive/html/lwip-devel/ There is a wiki about lwIP at http://lwip.wikia.com/wiki/LwIP_Wiki You might get questions answered there, but unfortunately, it is not as well maintained as it should be. lwIP was originally written by Adam Dunkels: http://dunkels.com/adam/ Reading Adam's papers, the files in docs/, browsing the source code documentation and browsing the mailing list archives is a good way to become familiar with the design of lwIP. Adam Dunkels Leon Woestenberg

庐山真面目之——LWIP初探

目录LWIP简介网络层协议分层模型介绍 LWIP源代码结构lwip源码文件说明lwip的contrib包文件说明 以太网接入MCU方案LWIP结构框图lwIP 是 Light Weight(轻型)IP 协议,有无操作系统的支持都可以运行。lwIP 实现的重点 是在保持 TCP/IP 协议主要功能的基础上减少对 RAM 的占用,它只需十几 KB 的 RAM 和 40K 左右的 ROM 就可以运行,这使 lwIP 协议栈适合在低端的嵌入式系统中使用。lwIP 的设计理 念下,既可以无操作系统使用,也可以带操作系

qq_43460068的博客 2881

smtp.c(用C语言编写的一个SMTP的服务器程序)

用C语言编写的一个SMTP的服务器程序,用于从客户端接受邮件并push到目的地邮箱去。

mbedtls-1.3.11适用于嵌入式的通信加密库

mbedtls是适用于嵌入式的轻量级通信加密库,对应用于嵌入式上做了优化

stm32 发送邮件

    嵌入式设备进行网络通信,如果不上操作系统的话还是有些麻烦的,现在有流行的LWIP协议,方便开发网络通信方案。花了几天时间,参考了网上很多资料例程,边看lwip接口边琢磨smtp协议,现在我的stm32可以发送邮件了,先上图这是测试的5封邮件,都成功发送了没进行大数量测试,因为发邮件主要使用来做物联网或远程报警的,不需要大数量的发送用的是lwip1.4.1,stm32f103按照smtp的协...

Lin9276的专栏 3714

TCP_IP协议源代码分析.zip

TCP_IP协议源代码 这是tcp/ip协议实现的源代码,我虽然研究过,但是不是太了解,希望有道者一直来过研究。

手把手教你用STM32发送带附件的邮件 (三、附件功能实现)

上节回顾 上一小节我们实现了基本的邮件发送功能,并且学习了如下知识点; 1. 如何使用 RT-Thread Studio 添加软件包。 2. 如何应对由于项目重新构建导致的参数丢失问题。 3. 如何配置邮件相关参数。 4. 如何修改邮件应用相关代码。 并且在上一章节我们强调了如果要能够正常收发邮件,必须打开邮件服务器的SMTP功能,并且使用相应的授权码登录而非邮箱的登录密码。在开始第三章节之前还请大家好好回顾一下前两节的内容。本章节将会是本项目的终章,并且有了前两章的积累,本章的内容也会相..

随便转转 1213

PyTorch多机训练Loss不一致问题排查指南:基于算子级一致性验证

比较二次训练过程中所有算子的误差,定位存在一致性问题的pytorch算子

Hi20240217的博客 1157

Qt 5.9.1 32位下,手把手搞定周立功CAN二次开发库的加载与配置(含常见错误排查)

本文详细介绍了在Qt 5.9.1 32位环境下配置周立功CAN二次开发库的完整流程,包括环境准备、项目配置、常见错误排查及性能优化建议。特别针对MinGW 32bit环境,提供了.pro文件的精准配置和DLL部署策略,帮助开发者快速解决库文件匹配、编译报错和运行时问题,实现高效的CAN总线通信开发。

weixin_28717431的博客 356

mbed TLS 简明教程(一)

概述 mbed tls库的设计可以轻松地与现有(嵌入式)应用程序集成,并为安全通讯、密码学和密钥管理提供构建模块.本教程将帮助你了解如何执行这些步骤. mbed tls 被设计成尽可能松散耦合,让你只需要整合你需要的部分,而不需要关注其余部分.这也为mbed tls 带来了非常低内存占用和构建足迹.通过消除你系统中不需要的部分,你可以将构建版本从低至45kB的版本升级到更典型的300kB版本,...

phenixyf的专栏 8123

STM32F103新手必看:0.96寸OLED屏幕从接线到动态显示全攻略(附IIC避坑指南)

本文为STM32F103新手提供了0.96寸OLED屏幕从硬件接线到软件驱动的完整实战指南。重点解析了IIC通信的时序、设备地址(0x78/0x7A)的常见陷阱,并详细演示了如何实现字符显示与平滑滚动显示等动态效果,帮助开发者快速上手并避开常见调试难题。

stone的博客 552

lwIP TCP/IP 协议栈笔记之二: 配置文件 opt.h & lwipopts.h 详解

目录 1. 简介 2. 配置 opt.h 说明 2.1 基础配置(Infrastructure) NO_SYS Timers memcpy Core locking and MPU Heap and memory pools Internal memory pools SNMP MIB2 callbacks Multicast(组播) Threading Checksum...

Xanthium 1万+

【学习体会】Lighttools8.4.0:简单光学系统实例

添加球型光源(SphereSource)和表面接收器: 对光线模拟的参数进行设置: 光线追踪-模拟输入 要追踪的光线总数,决定模拟的准确度,总数越多,准确度越高,当然耗时更多 预览光线数量是模拟之后可以看到的示意光线(黑线),一般是100~1000,随意设置 点击,开始模拟: (模拟结果) 如果光线太多,则会出现,可以看到剩余时间 照度分析: 分析-照度显示-光栅图表 ...

LeonJin的博客 1万+

【思博伦】史上最详细Spirent TestCenter测试仪2544套件使用图文教程精讲!图解超赞超详细!!!

Avalanche测试仪使用指南 摘要:本文介绍了Avalanche测试仪的基本配置和使用方法。该测试仪采用Linux内核系统,通过端口模拟客户端与服务器端,支持HTTP、DNS、FTP等多种协议。文章详细讲解了管理IP配置、端口占用、项目创建、客户端/服务器端的参数设置(包括负载模拟、行为配置、网段设置等),以及测试执行和结果查看的全流程。特别针对HTTP测试,说明了测试前的组网准备和注意事项,包括IP地址规划、License申请等。同时提供了2544套件的时延和吞吐量测试方法,包括参数配置技巧和结果分析

风云说通信 2267

基于LWIP协议栈net Conn方法,如何创建TCP服务器?附成功代码

本文以 LWIP 轻量级协议栈为核心,详细解析了嵌入式系统中 TCP 服务器的构建方法。通过 Netconn API 分步实现了端口绑定、连接监听、HTTP 数据收发等核心功能,并针对内存管理、错误处理、性能优化等关键问题提供实践建议。代码示例可直接应用于物联网设备通信、工业控制等场景,文中还探讨了多线程扩展、协议解析与安全增强等进阶方向。适合嵌入式开发者快速搭建轻量化网络服务参考。

qq_56338777的博客 750

uniapp [全端兼容] - 最新详细实现拍摄视频录像并可播放预览视频,调起本机摄像头开启录像录制完毕后保存到本机临时存放,可对拍摄的视频进行压缩处理减少文件大小不损失画质,详解录制视频并读取播放!

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,录视频,拍视频,拍摄录制视频后上传服务器,调起摄像头录视频并可预览,录视频上传,录像,uniapp录制视频并上传,录制视频并保存到本地设备,如何本地保存并播放预览,提供给用户观看MP4视频录像并上传到后端服务器完整功能源码,视频压缩,mp4文件,删除视频,录像后怎么预览,临时视频文件怎么减少压缩大小,视频压缩及上传,自己录视频并生成可播放的文件,录视频并能打开查看,视频压缩后上传,本机相册,录完怎么预

🏆 前端领域优质创作者 1万+

lwip-2.1.2的裸机移植(STM32F1 + SPL库 + lwip-2.1.2 + ENC28J60)

试验原因 产品板子上用的LWIP版本较旧2,这次准备换成现在官方最新的lwip-2.1.2. 想重新作lwip移植的原因 : 产品板子有bug与lwip相关,应该是以前程序移植的lwip有问题(配置和使用lwip). 正好这次放长假, 仔细研究一下lwip的移植, 配置,使用,调试。 lwip中带调试日志,可以通过ITM打印到MDK的调试窗口或用串口打印到PC端的串口助手上, 这样再遇到lwip使...

博客标题不能为空 2万+

YOLOv11-seg改进系列 | 引入CVPR2022 MetaFormer,零参数池化Token混合+StarReLU MLP,精度涨不掉速

本文提出了一种改进YOLOv11分割任务的C3k2_PoolingFormer模块,通过引入MetaFormer架构和Pooling Token Mixer,在保持模型轻量化的同时增强全局感受野建模能力。核心创新包括:1)使用零参数的AvgPool3×3差值作为Token Mixer,实现高效邻域信息聚合和局部对比增强;2)采用StarReLU MLP替代传统激活函数,提升非线性表达能力。改进后模型仅增加6.1%参数量,却能显著提升分割精度,特别适用于需要长程依赖建模的实例分割任务。该设计为轻量级视觉模型提

qq_44224801的博客 431

六、数据资产平台功能架构

该架构图展示了一个功能完善的数据资产平台,它涵盖了数据资产管理的各个方面,从数据采集、模型设计、编目到使用和分析。通过该平台,企业可以更好地管理数据资产,提高数据利用效率,并为业务决策提供有力支持。

moton2017的博客 1625

LWIP学习笔记5——TCP协议

1 TCP 协议 TCP 协议(TransmissionControl Protocol,传输控制协议) 它是最常用传输层协议,也是最稳定传输层协议,很多上层应用都是依赖于 TCP 协议进程传输数据,如SMTP、 FTP 等等。 一个完整的 TCP 传输必须有数据的交互,接收方在接收到数据之后必须正面进行确认,向发送方报告接收的结果,而发送方在发送数据之后必须等待接收方的确认,同时发送的时候会启动...

sinat_31039061的博客 1210

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

lwIP TCP/IP 协议栈笔记之十五: TCP协议

目录 1. TCP 服务简介 2. TCP 的特性 2.1 连接机制 2.2 确认与重传 2.3 缓冲机制 2.4 全双工通信 2.5 流量控制 2.6 差错控制 2.7 拥塞控制 3. 端口号的概念 4. TCP 报文段结构 4.1 TCP 报文段的封装 4.2TCP 报文段格式 5. TCP 连接 5.1 “三次握手”建立连接 5.2 “四次挥手”终止连接...

Xanthium 3042

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

STM32F4-ETH通信(lwip)——学习笔记

3、 以太网 (Ethernet) 是互联网技术的一种,以太网是指遵守 IEEE 802.3 标准组成的局域网,由 IEEE 802.3 标准规定的主要是位于参考模型 的物理层 (PHY) 和数据链路层中的介质访问控制子层 (MAC)。数据包中的 DA 是目 标地址,SA 是源地址。1、国际标准组织将整个以太网通信结构制定了 OSI 模型,总共分层七个层,分别 为应用层、表示层、会话层、传输层、网络层、数据链路层以及物理层,每个层功能不同,通信 中各司其职,整个模型包括硬件和软件定义。

sdg159357的博客 4390

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

推荐开源项目:lwIP - 轻量级TCP/IP协议栈

推荐开源项目:lwIP - 轻量级TCP/IP协议栈 项目地址:https://gitcode.com/gh_mirrors/lwi/lwip 项目介绍 lwIP 是一款小型且独立的TCP/IP协议栈实现,专注于在有限的内存资源环境下提供完整的TCP功能。它最初由Adam Dunkels在瑞典计算机科学研究所(SICS)的计算机和网络架构实验室开发,现在由全球范围内的开发者网络进行维护和更新。这款...

gitblog_00098的博客 1125

【STM32F407】第5章 ThreadX NetXDUO网络协议栈介绍

最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=104619 第5章 ThreadX NetXDUO网络协议栈介绍 本章节介绍 ThreadX NetXDUO网络协议栈,让大家对NetXDUO有一个整体的了解。 目录 第5章 ThreadX NetXDUO网络协议栈介绍 5.1 初学者重要提示 5.2 Express Logic公司介绍 5.2.1 ThreadX内核 5.2.2 USBX协议栈 ...

Simon223的博客 3760
上一篇: 【操作系统】一篇搞懂任务调度(十分详细)
下一篇: 【Git专栏】git如何切换到某个commit(超详细)
兰舟比特
博客等级 码龄7年 3604粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兰舟比特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值