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

时间:2012-10-10 17:20:34

标签: c++ smtp udp

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

我刚刚开始使用计算机网络,我只需知道所涉及的步骤。

谢谢。

1 个答案:

答案 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部分,然后从那里开始。我猜是因为它是一项任务,你可能不需要协议中的所有内容。

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