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

标签 c++ smtp udp

<分区>

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

我刚刚接触计算机网络,我只需要知道涉及的步骤。

谢谢。

最佳答案

Internet RFC(征求意见)是此类信息的最佳来源:RFC 821 中概述了 SMTP。 .好消息是 SMTP 是一种基于文本的协议(protocol),就像 HTTP 和 friend 一样。

这是客户端 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 协议(protocol)。或者只是用您最喜欢的语言在线搜索 echo 协议(protocol)的一些源代码。例如,如果您想将 C++ 与 boost.asio 一起用于网络,它有 demo code对于 UDP echo 客户端和服务器。对于 Perl,有一些简单的 UDP 代码 here .

然后浏览您需要的 RFC 821 部分,然后从那里开始。我猜这是一项作业,您可能不需要协议(protocol)中的所有内容。

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

关于c++ - 使用 UDP 的电子邮件客户端/服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12824866/

相关文章:

c++ - 为什么重载 operator->() 有用?

php - 如何使用 PHP/Laravel 在 sendgrid 中动态设置退订链接

c++ - 将一些数据写入 Char

sockets - 如何在多宿主服务器的非默认接口(interface)上接收多播数据

ruby - 针对外部 UDP API 进行测试。从哪儿开始?

c++ - std::string::reserve() 和 std::string::clear() 难题

c++ - 如何解决 "Does not name a type"错误

c++ - std::vector 在返回之前被自动清除

.net - 在 .NET 中以高速率发送 SMTP 电子邮件

c# - 如何从 Windows 服务发送电子邮件?