![](https://csdnimg.cn/release/download_crawler_static/86279447/bg1.jpg)
实 验 十一 基于 SMTP 协议的邮件发送
11.1 实验目的
电子邮件是互联网中重要的一种应用,给人们提供了极大便利,本实验主要介绍基于
SMTP 协议实现邮件的发送,邮件数据须经过 BASE64 编码,本实验采用了.NET 平台提供的
MailMessage 类来简化编码。
11.2 SMTP 协议
简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP) 是互联网普遍应用的 email 传输
标准,它属于 TCP/IP 协议族使用 TCP 端口 25。SMTP 是简单的基于文本的协议,在其之上
指定了一条消息的一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传
输。SMTP 要为一个给定的域名决定一个 SMTP 服务器,需要使用 MX (Mail eXchange) DNS。
SMTP 协议最初实现基于纯 ASCII 文本传输,二进制文件不被支持,MIME 标准设计用来
编码二进制文件,MIME 里使用 BASE64 编码,它要求把每三个 8Bit 的字节转换为四个 6Bit
的字节(3Œ8 = 4Œ6 =24),然后把 6Bit 再添两位高位 0,组成四个 8Bit 的字节,这样编码后
的数据比原始数据略长,为原来的 4/3。完整的 base64 定义可见 RFC1421 和 RFC2045。编码
后的数据变成文本文件即可通过 SMTP 来传输。最初的 SMTP 的局限之一在于它没有对发送
方进行身份验证的机制,过多垃圾邮件会给服务器造成负担,后来定义了 SMTP-AUTH 扩展,
它要求用户必须进行身份登录后才可以执 SMTP 命令。
可以通过 telnet 程序测试一个 SMTP 服务器,方法是在命令行输下面的命令:
telnet smtp.126.com 25
成功连接服务器后,输入 SMTP 的命令进行邮件操作。
11.3 实验内容
11.3.1 SMTP 协议发送邮件
SMTP 的命令和响应都是基于文本,以命令行为单位,换行符为 CR/LF。响应信息一般只
有一行,由一个 3 位数的代码开始,后面可附上简短的文字说明。SMTP 要经过建立连接、传
送邮件和释放连接 3 个阶段。TCP 连接 SMTP 服务器发送邮件的基本流程如下:
1. 建立 TCP 连接。
2. 客户端向服务器发送 HELO 命令
3. 发送 USER 和 PASS 命令以进行身份验证。
1