邮件传输协议SMTP和SMTPS
在《使用Spring Boot 优雅地发送邮件》中,我们实现了spring boot集成spring-boot-starter-mail,使用JavaMailSender发送电子邮件的功能。在配置文件中设置了端口和邮件传输协议,现在思考一个问题——它们是什么呢?这里就剥茧抽丝般的揭开其神秘面纱。
1. 三种邮件传输协议概述
作为一个勤学好问的程序猿,我们当然也要了解下邮件发送的协议,这个是关乎邮件发送的最根本的内容。
在上述邮件发送的过程中,邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行邮件传递,是要遵守一定的规则,这个规则就是邮件传输协议。常见的电子邮件协议SMTP、POP3、IMAP,它们都隶属于TCP/IP协议族,默认状态下,分别通过TCP端口25、110和143建立连接。下面分别对其进行简单介绍。
- SMTP:简单邮件传输协议(Simple Mail Transfer Protocol),用于发送电子邮件的传输协议;主要用来从邮件客户端向邮件服务器发送邮件,也可以用来在邮件服务器之间转发邮件。
- POP3:Post Office Protocol,用于接收电子邮件的标准协议;
- IMAP:全称是 Internet Message Access Protocol,互联网消息协议,是POP3的代替协议;
后两者用来从邮件服务器获取邮件。
这三种协议都有对应SSL加密传输的协议,分别是SMTPS,POP3S和IMAPS。下面介绍SMTP和SMTPS协议。
2. SMTP协议
SMTP:简单邮件传输协议,是一个基于文本的协议。在其上指定了一个消息的一个或多个接收者(收件人和抄送人),然后消息文本会被传输。可以使用简单的telnet程序来测试一个SMTP服务器。
如今绝大多数邮件服务器都使用该协议。当你给别人发邮件时,你的服务器的某个动态端口(大于1024)就会和邮件服务器的25端口建立一个连接,你发送的邮件会通过这个连接传送到邮件服务器上,保存起来。需要注意的是,现在国内外的大云主机商(例如:阿里云),多数不允许连接外网的25端口。
3. SMTPS协议
SMTPS(SMTP-over-SSL)是SMTP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。SMTPS和SMTP协议一样,也是用来发送邮件的,只是更安全些,防止邮件被黑客截取泄密,还可实现邮件发送者抗抵赖功能。防止发送者发送之后删除已发邮件,拒不承认发送过这样一份邮件。端口465和587便是基于SMTPS协议开放的。
465端口(SMTPS):它是SMTPS协议服务所使用的其中一个端口,它在邮件的传输过程中是加密传输(SSL/TLS)的,相比于SMTP协议攻击者无法获得邮件内容,邮件在一开始就被保护了起来。
587端口(SMTPS):它是SMTPS协议服务所使用的另一个端口,它在邮件的传输过程中是加密传输(STARTTLS)的,相比于SMTP协议攻击者无法获得邮件内容,邮件在STARTTLS命令执行后才被加密。465用于Outlook上,而587可以用于任何程序上。
Reference
https://www.jianshu.com/p/c1763b172013

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南