
在一些应用场合(物联网等领域),我们需要使远程设备能够自行和互联网进行交互,记录发生的事件,便于用户实时获取远程设备的运行状态。比如一些家庭监控系统,当摄像头检测到图像有变化时便会自动拍照并将照片发送给住户主人;还比如远程的一些数据采集装置需要定时汇报被检测环境的状态,也可以通过网络发送至用户的服务器。类似的应用很多,有一种简单有效的解决办法便是使用邮件。 所以,在使用MCU的系统中,使用MCU自动向指定邮箱发送邮件,可以简化系统的复杂度。基于此考虑,本设计使用STM32F107VCT6作为主控芯片实现了发送邮件功能。 硬件平台:STM32F107VCT6 + DP83848 软件平台:uC/OS-II_V2.92 + LwIP-1.4.1 板子靓照: ![]() 邮件发送使用SMTP协议,使用MCU和指定的SMTP服务器建立连接,通过此SMTP服务器向指定邮箱发送邮件即可。 笔者分别移植了uC/OS-II(到Micrium公司官网下载最新uC/OS-II源码,www.micrium.com,和LwIP的最新版本(最新版本是1.4.1,www.savannah.nongnu.org/projects/lwip/),另外,在LwIP网站上还提供了几个示例:http server、ping、shell、smtp、tcpecho、udpecho等可以参考。笔者使用其中的smtp示例。 平台搭建完成后,发送邮件就很简单了,主要分为4步: 1、 设置SMTP服务器的IP地址。值得注意的是,若启用了DNS功能,直接设置SMTP服务器的域名即可。笔者使用的是新浪邮箱,新浪的SMTP服务器域名是smtp.sina.com.cn,代码可写成: smtp_set_server_addr("smtp.sina.com.cn"); 2、 设置SMTP服务器使用的端口号,规定端口号是25,所以: smtp_set_server_port(25); 事实上,SMTP示例程序中默认端口号就是25,此步可以省略。 3、 设置用户名和密码,SMTP需要登陆验证,只有正确的用户才可以授权使用SMTP服务器发送邮件,[email=笔者的新浪邮箱是gyf_23@sina.com]笔者的新浪邮箱是gyf_23@sina.com[/email],密码就不在此公开了^_^;代码为: smtp_set_auth("gyf_23@sina.com", "密码"); 4、 通过以上三步便可以发送邮件了,笔者使用新浪的SMTP服务器向QQ邮箱发送了一封邮件,邮件的标题是"A email from mcu!",邮件内容是:"Hello, smtp server! This is a email from stm32!"。代码如下: smtp_send_mail("gyf_23@sina.com", "279088304@qq.com", "A email from mcu!", "Hello, smtp server! This is a email from stm32!", my_smtp_result_fn, NULL); 通过以上几步,查看qq邮箱便可以看到“来自STM32的邮件”了!如下图: ![]() 附件是Lwip和ucos-ii的源码以及lwip的示例程序,感兴趣的可以下载尝试。 ![]() |
回复:基于STM32F107的SMTP邮件发送
RE:基于STM32F107的SMTP邮件发送
RE:基于STM32F107的SMTP邮件发送
RE:基于STM32F107的SMTP邮件发送
回复:基于STM32F107的SMTP邮件发送
回复:基于STM32F107的SMTP邮件发送
回复:基于STM32F107的SMTP邮件发送
RE:基于STM32F107的SMTP邮件发送
RE:基于STM32F107的SMTP邮件发送
RE:基于STM32F107的SMTP邮件发送