跟W5500學習SMTP協議

SMTP簡介

SMTPSimple Mail Transfer Protocol簡單郵件傳輸協議,它是一組用於由源地址到目的地址傳送郵件的規則,由它來控制信件的中轉方式。那我們來剖析一下平時發送電子郵件的整個過程,如圖1所示:

SMTP1

1 郵件發送過程示意圖

我們可以看到SMTP協議是發送過程中所使用的協議,我們這次用W5500(全硬件TCP/IP協議棧以太網芯片)給大家模擬演示的僅是圖中的第一部分,發信人向郵件服務器發送請求的過程。

SMTPTCP協議25端口監聽連續請求。SMTP連接和發送過程:

1、建立TCP 連接。

2客戶端發送HELO命令以標識發件人自己的身份,然後客戶端發送MAIL命令;服務器端正希望以OK作為響應,表明準備接收。

3客戶端發送RCPT命令,以標識該電子郵件的計劃接收人,可以有多個RCPT行;服務器端則表示是否願意為收件人接收郵件。

4、協商結束,發送郵件,用命令DATA發送。

5、以“.”號表示結束並將內容一起發出去,結束此次發送,用QUIT命令退出。

SMTP的實現

由於資源受限,在沒有操作系統的支持下,通過單片機發送郵件與傳統的電腦操作將有很大的不同。這裡用W5500126郵箱通信為例來具體分析郵件的發送過程。在本示例代碼中,發件人郵箱名為:[email protected],郵箱密碼為:hello123。收件人郵箱地址為:[email protected],郵件內容為:Hello!WIZnet!。如果想用別的郵箱做測試的話,請修改代碼中收件人和發件人的郵箱名和密碼。

具體過程很簡單,先解析126郵箱的服務器域名smtp.126.com,成功以後就執行郵件發送函數,郵件發送成功以後就跳出循環或者等待。讓程序進入了一個死循環,這樣程序將不再跳到主循環,避免重複發送相同的郵件,這樣使得在W5500的運行模式下,按一下Reset鍵或者上電一次,只發送一封郵件。

接下來介紹一下具體的測試過程,測試步驟如下:

1SMTP例程採用默認的IP信息,所以在w5500_conf.c文件中設置ip_fromIP_FROM_DEFINE

2、對代碼進行編譯,之後將程序燒錄到野火開發板。

3、連接好網線,USB串口線。打開串口調試工具,複位野火開發板,從輸出結果可以得到圖2設置信息。

4、首先解析到smtp.126.com郵件服務器的IP,然後發送郵件,如果發送成功,會得到mail send OK的信息。

5、登陸串口提示的賬號,查看郵件的收件箱可以找到剛才發送的郵件。

SMTP2

2 郵件成功發送打印信息

示例程序下載:http://pan.baidu.com/s/1kTmVUHT

感謝閱讀!

歡迎訪問:

WIZnet官方網站:http://www.iwiznet.co.kr

WIZnet官方微博:http://weibo.com/wiznet2012

WIZnet微信公眾平台:

WIZnet_wechat