邮箱系统原理——SMTP协议

SMTP协议是电子邮件的基础,通过TCP/IP在25端口运行。发送邮件涉及的关键命令包括ehlo、auth(如auth login)、mail from、rcpt to、data和quit。在DOS命令行下,可以使用telnet进行测试。状态码2xx表示成功,5xx表示失败,3xx表示未完成。SMTP服务器可能将邮件暂存于队列,导致无法实时检测收件人有效性,这使得电子邮件的可靠性有限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SMTP协议是一个基于TCP/IP的应用层协议,SMTP服务器的默认的网络监听端口号为25

SMTP协议中一共定义了18条命令:其中比较发送一封邮件的过程通常需要的有以下6条命令

ehlo命令:SMTP邮件发送程序与SMTP接收程序建立连接后必须发送的第一条SMTP命令,后面通常加本主机名

auth命令:认证命令,如auth login,然后输入用户名和密码(必须是BASE64编码后的)

userName = "abc"
BASE64Encoder encoder = new BASE64Encoder();
encoder.encode(userName.getBytes());

mail from命令:发送者邮箱地址,如mail from:<123@qq.com>

rcpt to命令:接受者邮箱地址,如rcpt to:<456@163.com>

data命令:此命令表示SMTP邮件发送程序准备开始传送邮件内容了,在该命令后发送的都被当成邮件内容,直到遇到结束符号内容结束,可以用"."

quit命令:表示要结束邮件发送过程

开始测试方法:dos命令下:

telnet命令+SMTP服务器名+端口号,如

telnet smtp.sina.com.cn 25

发送命令过程中,响应状态码的最高位数字代表了不同的分类,2代表命令执行成功,5代表命令执行失败,3代表命令还没完成

说明:一些邮件系统支持自动回复邮件的功能,但是如果两个邮箱的mail from命令后的地址是对方,这样会造成死循环回复,为了避免这样的情况,一些SMTP服务器在进行邮件自动回复时,通常不填写mail from命令后面的邮件地址,借此来避免循环回复

SMTP虽然是使用了TCP/IP的应用层协议,但是如果SMTP服务器用于向其他SMTP服务器转发邮件,它在接收到邮件发送程序的rcpt to 命令后,由于并不会马上向其他SMTP服务器转发当前邮件,而是先将当前邮件保存到邮件发送队列里面,所以,它无法检测到收件人是否存在,总是会返回250的响应状态码,。所以人们在通过SMTP服务器向外转发邮件时,即使收件人的地址不存在,或者邮件最终没有从邮件队列中转发出去,邮件客户端程序当时也会看到邮件发送成功的信息。故电子邮件并不是一种完全可靠的通信方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值