你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于STM32F107的SMTP邮件发送

[复制链接]
柯南大侠 发布时间:2014-4-22 21:00
在一些应用场合(物联网等领域),我们需要使远程设备能够自行和互联网进行交互,记录发生的事件,便于用户实时获取远程设备的运行状态。比如一些家庭监控系统,当摄像头检测到图像有变化时便会自动拍照并将照片发送给住户主人;还比如远程的一些数据采集装置需要定时汇报被检测环境的状态,也可以通过网络发送至用户的服务器。类似的应用很多,有一种简单有效的解决办法便是使用邮件。
7 ?1 O" A$ r! X- x. x4 e$ K* l  I所以,在使用MCU的系统中,使用MCU自动向指定邮箱发送邮件,可以简化系统的复杂度。基于此考虑,本设计使用STM32F107VCT6作为主控芯片实现了发送邮件功能。; {  E& V2 z, M4 p
 
4 I) E. T* w- ^6 Y硬件平台:STM32F107VCT6 + DP83848
  i  N* j! ^% o软件平台:uC/OS-II_V2.92 + LwIP-1.4.16 l+ L* Y  \% x. ^
 ) y3 {2 M) I  U" `$ Q; W/ ]
板子靓照:$ \! O" a2 r; e  Z) t8 h
WP_20140422_20_50_57_Pro_副本.jpg
1 ~8 w) o! H& x # L7 {; M& `) a/ b( ^% p$ U' Q5 h
邮件发送使用SMTP协议,使用MCU和指定的SMTP服务器建立连接,通过此SMTP服务器向指定邮箱发送邮件即可。7 _2 A. H# r' M6 P

( ^8 Z! M: T% H2 C2 I3 k笔者分别移植了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示例。5 A6 K) c' a' C- O, w
平台搭建完成后,发送邮件就很简单了,主要分为4步:
$ `. z* x! u/ A- ~+ S8 p9 L# w7 T( W1、  设置SMTP服务器的IP地址。值得注意的是,若启用了DNS功能,直接设置SMTP服务器的域名即可。笔者使用的是新浪邮箱,新浪的SMTP服务器域名是smtp.sina.com.cn,代码可写成:9 M* n* o/ ?* b7 h5 T; |
smtp_set_server_addr("smtp.sina.com.cn");
0 R  V& K, E8 e; v * u/ z3 D; u: X' t# ?8 k  S
2、  设置SMTP服务器使用的端口号,规定端口号是25,所以:
% o2 x: V: m* @' q: ^+ |# \: gsmtp_set_server_port(25);
* e* p6 ~0 Z' K事实上,SMTP示例程序中默认端口号就是25,此步可以省略。
% i6 K) Z! r, g: a5 j& ~3、  设置用户名和密码,SMTP需要登陆验证,只有正确的用户才可以授权使用SMTP服务器发送邮件,[email=笔者的新浪邮箱是gyf_23@sina.com]笔者的新浪邮箱是gyf_23@sina.com[/email],密码就不在此公开了^_^;代码为:3 y& [9 M& j/ i& S( e* H8 M
smtp_set_auth("gyf_23@sina.com", "密码");* |7 B+ i. Z5 ]% M, M
4、  通过以上三步便可以发送邮件了,笔者使用新浪的SMTP服务器向QQ邮箱发送了一封邮件,邮件的标题是"A email from mcu!",邮件内容是:"Hello, smtp server! This is a email from stm32!"。代码如下:6 m: v9 |; }8 M; }, B& e( B
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);
" N( y0 {1 j' ^, K4 [! W9 ] 5 ~+ C3 L, {3 D: k+ q
通过以上几步,查看qq邮箱便可以看到“来自STM32的邮件”了!如下图:
" o" k  J1 p9 y* n4 }; S, o 
  r9 x  c$ i. _9 T: f" p  ^ QQ图片20140422204608.jpg
; b9 ~1 V4 b- Z4 h, A% a" [1 k ; b) N( A1 @2 }4 P
附件是Lwip和ucos-ii的源码以及lwip的示例程序,感兴趣的可以下载尝试。
* z0 s3 g8 R; o- j: @! h0 G1 {/ l lwip_samples.zip (1.43 MB, 下载次数: 141)
赞 收藏 2 评论12 发布时间:2014-4-22 21:00

举报

12个回答
yedushu 回答时间:2014-5-21 17:15:33

回复:基于STM32F107的SMTP邮件发送

正需要、、、、、、
北大荒的虎 回答时间:2014-5-25 17:45:16

RE:基于STM32F107的SMTP邮件发送

学习,看一下,现在在学习lwip
快乐汉 回答时间:2014-6-8 22:25:30

RE:基于STM32F107的SMTP邮件发送

学习下,谢谢
chencping 回答时间:2014-6-9 15:45:13

RE:基于STM32F107的SMTP邮件发送

学习,看一下,现在在学习lwip
东南大风 回答时间:2014-9-17 22:58:34

回复:基于STM32F107的SMTP邮件发送

感谢分享,多谢楼主~~~~
若如初见 回答时间:2014-9-18 10:59:17

回复:基于STM32F107的SMTP邮件发送

很不错啊,学来用用
stary666 回答时间:2014-9-18 16:04:02

回复:基于STM32F107的SMTP邮件发送

谢谢共享!
hbvictor-331972 回答时间:2014-9-27 10:40:42

RE:基于STM32F107的SMTP邮件发送

学习,看一下,现在在学习lwip
moonyuan 回答时间:2014-9-27 20:19:42

RE:基于STM32F107的SMTP邮件发送

高手大作
依旧丶那悲伤 回答时间:2014-9-30 16:33:18

RE:基于STM32F107的SMTP邮件发送

看看    学习学习
小小路路 回答时间:2014-12-14 21:55:29
目前已经在局域网内移植成功,但是发送邮件到外网(QQ或163),都发不出去。试过直接连接邮箱服务器的IP地址或DNS方式域名连接,都连接埠不上服务器。这是什么问题呢?
flyxin 回答时间:2018-4-24 10:22:56
现在发布出去,楼主可以给一个例子吗,谢谢

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版