使用UDP的电子邮件客户端/服务器

Email Client/Server using UDP

本文关键字:服务器 客户端 电子邮件 UDP 使用      更新时间:2023-10-16

有人能帮助我使用UDP创建一个简单、基本的电子邮件客户端和电子邮件服务器并熟悉SMTP的工作原理吗?

我刚开始电脑网络,我只需要知道其中的步骤。

谢谢。

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:<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一起用于网络,它有UDPecho客户端和服务器的演示代码。对于Perl,这里有一些简单的UDP代码。

然后浏览一下你需要的RFC 821的部分,然后从那里开始。我猜,既然这是一项任务,你可能不需要协议中的所有内容。

由于协议只是简单的文本命令和响应,解析它应该不会成为问题。