跟W5500学习SMTP协议
0赞SMTP简介
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。那我们来剖析一下平时发送电子邮件的整个过程,如图1所示:
图1邮件发送过程示意图
我们可以看到SMTP协议是发送过程中所使用的协议,我们这次用W5500(全硬件TCP/IP协议栈网络芯片)给大家模拟演示的仅是图中的第一部分,发信人向邮件服务器发送请求的过程。
SMTP在TCP协议25号端口监听连续请求。SMTP连接和发送过程:
1、建立TCP连接。
2、客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令;服务器端正希望以OK作为响应,表明准备接收。
3、客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行;服务器端则表示是否愿意为收件人接收邮件。
4、协商结束,发送邮件,用命令DATA发送。
5、以“.”号表示结束并将内容一起发出去,结束此次发送,用QUIT命令退出。
SMTP的实现
由于资源受限,在没有操作系统的支持下,通过单片机发送邮件与传统的电脑操作将有很大的不同。这里用W5500与126邮箱通信为例来具体分析邮件的发送过程。在本示例代码中,发件人邮箱名为:wiznet2013@126.com,邮箱密码为:hello123。收件人邮箱地址为:3196855541@qq.com,邮件内容为:Hello!WIZnet!。如果想用别的邮箱做测试的话,请修改代码中收件人和发件人的邮箱名和密码。
具体过程很简单,先解析126邮箱的服务器域名smtp.126.com,成功以后就执行邮件发送函数,邮件发送成功以后就跳出循环或者等待。让程序进入了一个死循环,这样程序将不再跳到主循环,避免重复发送相同的邮件,这样使得在W5500的运行模式下,按一下Reset键或者上电一次,只发送一封邮件。
接下来介绍一下具体的测试过程,测试步骤如下:
1、SMTP例程采用默认的IP信息,所以在w5500_conf.c文件中设置ip_from为IP_FROM_DEFINE。
2、对代码进行编译,之后将程序烧录到野火开发板。
3、连接好网线,USB串口线。打开串口调试工具,复位野火开发板,从输出结果可以得到图2设置信息。
4、首先解析到smtp.126.com邮件服务器的IP,然后发送邮件,如果发送成功,会得到mail send OK的信息。
5、登陆串口提示的账号,查看邮件的收件箱可以找到刚才发送的邮件。
图2邮件成功发送打印信息
示例程序下载:http://pan.baidu.com/s/1kTmVUHT
感谢阅读!
欢迎访问:
WIZnet官方网站:http://www.iwiznet.co.kr
WIZnet官方微博:http://weibo.com/wiznet2012
WIZnet微信公众平台: