热度 28
2015-4-29 17:14
1578 次阅读|
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微信公众平台: