有人可以帮助我使用UDP创建一个简单的基本电子邮件客户端和电子邮件服务器并熟悉SMTP的工作原理吗?
我刚刚开始使用计算机网络,我只需知道所涉及的步骤。
谢谢。
答案 0 :(得分:0)
Internet RFC( Request For Comments )是此类信息的最佳来源:RFC 821中列出了SMTP。好消息是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:<bob@example.org>
S: 250 Ok
C: RCPT TO:<alice@example.com>
S: 250 Ok
C: RCPT TO:<theboss@example.com>
S: 250 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: "Bob Example" <bob@example.org>
C: To: "Alice Example" <alice@example.com>
C: Cc: theboss@example.com
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 一起用于网络,则它对于echo
客户端和服务器具有demo code。对于Perl,有一些简单的UDP代码here。
然后浏览所需的RFC 821部分,然后从那里开始。我猜是因为它是一项任务,你可能不需要协议中的所有内容。
由于协议只是简单的文本命令和响应,解析它应该不是问题。