2012-10-10 112 views
1

任何人都可以請幫助我使用UDP創建一個簡單的基本電子郵件客戶端和電子郵件服務器,並熟悉SMTP的工作方式?使用UDP的電子郵件客戶端/服務器

我剛剛開始使用計算機網絡,我只需要知道所涉及的步驟。

謝謝。

+2

這個問題太廣泛而且不清楚。我可以迴應的唯一有用的事情是電子郵件使用的SMTP協議不是UDP,而是基於TCP。 –

+0

相關:http://stackoverflow.com/questions/3765738/writing-a-simple-email-server。另外,使用UDP來發送電子郵件將是不明智的,因爲UDP數據包可以被丟棄。 – QuasarDonkey

+0

這是一個編程任務。被告知只使用UDP。 – AbdullahTariq

回答

0

Internet RFC(請求註解)是此類信息的最佳來源:SMTP概述於RFC 821。好消息是SMTP是一種基於文本的協議,就像HTTP和朋友一樣。

這裏的客戶C和服務器之間S爲例對話(來源於維基百科):

S: 220 smtp.example.com ESMTP Postfix 
C: HELO relay.example.org 
S: 250 Hello relay.example.org, I am glad to meet you 
C: MAIL FROM:<[email protected]> 
S: 250 Ok 
C: RCPT TO:<[email protected]> 
S: 250 Ok 
C: RCPT TO:<[email protected]> 
S: 250 Ok 
C: DATA 
S: 354 End data with <CR><LF>.<CR><LF> 
C: From: "Bob Example" <[email protected]> 
C: To: "Alice Example" <[email protected]> 
C: Cc: [email protected] 
C: Date: Tue, 15 January 2008 16:02:43 -0500 
C: Subject: Test message 
C: 
C: Hello Alice. 
C: This is a test message with 5 header fields and 4 lines in the message body. 
C: Your friend, 
C: Bob 
C: . 
S: 250 Ok: queued as 12345 
C: QUIT 
S: 221 Bye 
{The server closes the connection} 

使用UDP電子郵件不會是個好主意,因爲UDP數據包可以被丟棄。 TCP會更好用。但既然你提到這是一個任務,我想沒關係。

所以首先寫你的通用UDP客戶端/服務器代碼。然後修改它以支持SMTP命令。

我首先實現簡單的echo協議。或者只需在echo協議中以您最喜歡的語言在線搜索一些源代碼。例如,如果您想使用C++和boost.asio進行聯網,則對於UDP echo客戶端和服務器,它的demo code。對於Perl,有一些簡單的UDP代碼here

然後瀏覽你需要的RFC 821的部分,然後從那裏開始。我猜是因爲這是一項任務,你可能不需要協議中的所有內容。

由於協議只是簡單的文本命令和響應,解析它應該不成問題。

+0

非常感謝您的幫助。 – AbdullahTariq

+0

這正是需要實施的內容。再次感謝! – AbdullahTariq