2015-11-05 27 views
1

這可能不在正確的位置,所以告訴我,我會移動它。從微控制器發送smtp電子郵件

我是一個最近的EE畢業生,我被聘請用一個簡單的32位處理器構建一個存在於SoC上的系統。該系統基本上監視幾個外部設備,並在其上執行一些DSP,然後應該使用WiFi設備(在我的情況下,我有ESP8266使用UDP)將結果發送到電子郵件服務器進行記錄/通知。

我一直在試圖找到一個我可以使用的庫,但是我的uC只能在C中編程,並且我已經爲它設置了UDP,並且一切都在C++中使用其他協議,或者完全使用其他協議。

我很擅長處理DSP,在SoC和uC上都很棒,但是當談到這個電子郵件服務器通信的時候,我感到茫然。

我已經成功配置了傳感器,數據路徑,DSP的一切,並通過UDP將系統連接到了我的WiFi,但我還沒有弄清楚如何將數據發送到任何服務器。

有人能幫我理解我應該怎麼做呢?

我已經看過一些簡單的SMTP命令,如HELO,MAIL,RCPT,DATA等,但我無法理解我究竟應該如何在我的代碼中實現它們。

當我通過UDP發送WiFi數據時,我會發送什麼類型的數據,以及如何格式化它?我需要發送任何其他類型的標誌嗎?我應該如何期待迴應?我也知道數據必須轉化爲基數64,這使我更加困惑。

我對UDP也不是很熟悉,我一直在使用作爲SoC默認庫的一部分的庫來連接到我的WiFi。

我知道這些可能看起來像是明顯或愚蠢的問題,但它是我不再有任何知識,並且我在網上找到的所有東西都沒有意義,或者不試圖解釋它,只是給出了一個前置 - 解決方案

我找到了RFC2821,但它沒有得到任何更清楚。

我知道這很多,但任何幫助都將是一個救星!

+1

SMTP需要TCP(UDP無連接,SMTP需要建立會話)RFC822,如果你還沒有找到它的話。 – joop

+0

謝謝我將切換到。我不知道這一點。 – scarlso9

回答

1

由於您在問這個問題,我假設您沒有啓動並運行適用於微控制器的操作系統,例如Linux的嵌入式變體等。如果你是,你可以簡單地利用可能內置的應用程序或其他現有的代碼。

但是你沒有提到寫了一個以太網堆棧,那麼你是否使用了一些其他庫或操作環境,它們可能具有實現SMTP所需的一些功能?

如果您不需要編寫自己的SMTP客戶端以直接在您使用的處理器上運行,那麼您應該能夠找到大量源代碼示例。 How To Write an SMTP client的快速谷歌搜索顯示了一些帶有一些示例代碼的文章。一個article似乎是一個確切的命中,但你需要進一步看看它。

但是,我強烈建議你坐下來用telnet client and connect to an SMTP server,你可以使用並嘗試發送消息所需的命令。如果您只需發送文本,則不需要參與MIME編碼或類似的任何操作。

+0

我沒有使用任何庫或操作環境,所以我需要找到一個庫,或者我需要編寫自己的smtp客戶端。在我看到你的帖子之前,我剛剛發現了telnet時刻,所以我會檢查一下。當我嘗試了一些建議時,我會稍微更新一下。謝謝。 – scarlso9

+0

原來,ESP8266上有一個tcp/ip堆棧......支付對您使用的設備進行全面研究而不是假設。感謝您的幫助。 – scarlso9