电子邮件协议(SMTP协议,POP3协议)

  • SMTP
  • 使用Telnet访问SMTP服务器
  • POP3
  • 使用Telnet访问POP3服务器

SMTP

STMP(简单邮件传输协议)是因特网电子邮件的核心。如下图所示,SMTP是负责将用户代理(如Outlook)的邮件发送到邮件服务器,以及服务器之间发送邮件的协议。SMTP有两个部分:SMTP客户端和SMTP服务器端。当一个邮件服务器向其它服务器发送邮件时,它就表现为SMTP客户端,当邮件服务器从其他邮件服务器上接收邮件时,它就表现为一个SMTP服务器端。

值得注意的是,SMTP只能传输ASCII码,如果想要传输非ASCII的文字以及图像、视频等,需要将这些数据编码为ASCII码,然后传输完毕后再还原为原始数据。

使用SMTP传输邮件的流程如下所示:

  • Alice通过代理并使用SMTP协议将邮件发送到Alice的邮件服务器;
  • Alice的邮件服务器发现Alice的邮件,并通过邮件中的收件人信息找到Bob的邮件服务器;
  • Alice通过SMTP协议向Bob服务器发送邮件;
  • Bob登录代理,通过其它协议(POP3,IMAP,HTML)获得邮件。

使用Telnet访问SMTP服务器

# 通过telnet命令建立起一个SMTP服务器的链接
telnet smtp.qq.com 25
# 得到返回信息220说明链接成功
220 newxmesmtplogicsvrszc1-0.qq.com XMail Esmtp QQ Mail Server.
# 打招呼,发送helo+任意内容
helo qq
# 得到返回250说明对方收到招呼
250-newxmesmtplogicsvrszc1-0.qq.com-9.146.228.40-10806377
250-SIZE 73400320
250 OK
# 输入 auth login进行登录,这里telnet表现为客户端,输入的用户名不会被发送到服务器,只有邮箱授权码会发送到服务器
auth login
# 得到 334 VXNlcm5hbWU6,其中VXNlcm5hbWU6VXNlcm5hbWU6是Username:的Base64格式
334 VXNlcm5hbWU6
# 输入用户名,即自己的qq号,但这里要是qq号的Base64格式
MjQ5ODE0NDI4OUBxcS5jb20=
# 得到334 UGFzc3dvcmQ6,其中UGFzc3dvcmQ6是Password:的Base64格式
334 UGFzc3dvcmQ6
# 输入邮箱授权码,这里之所以输入邮箱授权码而不是密码可能是因为SMTP是明文传输,为了保护密码所以使用邮箱授权码,实际上之前输入的用户名也不会传到服务器端中,应该是用于客户端验证登录的用户是谁,防止发信人伪造发信人信息
略
# 得到235 Authentication successful说明验证成功
235 Authentication successful
# 设置邮件发送方 mail from: <发件人邮箱>
mail from: <2498144289@qq.com>
# 得到250 OK 说明没有问题
250 OK
# 设置邮件接收方 rcpt to : <收件人邮箱>
rcpt to: <646462552@qq.com>
# 得到250 OK 说明没有问题
250 OK
# 输入data表明要发送邮件信息了
data
# 得到354 End data with <CR><LF>.<CR><LF>. 提示用户单独一行的.表示为结束
354 End data with <CR><LF>.<CR><LF>.
# 输入SMTP报文首部(可选)不输入的话会导致邮件信息不全,但邮件仍会发送到收件人
From: Huang
To: Wang
Subject: Happy
# 在报文首部之后紧接着一个空白行,然后输入以ASCII格式表示的报文体Hi, I am Huang
Good every
..
ABC
TTTT
.
# 在服务器接收到一个单独一行的.后,认为邮件内容结束,返回状态码,如果是250,表示发送成功
250 OK: queued as.
# 输入QUIT离开
QUIT
# 服务端返回221表示结束会话
221 Bye.

在邮箱中可以看到邮件已经成功到达,其中内容与在命令行时有所不同,第一行中“Hi, I am huHuang”,多出了“hu”,这是因为在telnet中输入信息通过退格键消除掉后只是在命令行中消失了,实际上内容仍然存在,即不能使用回车键来消除错误。

POP3

由于SMTP是一个“推”协议,即将数据发送到某个主机的协议,并不具备从某个主机上获得数据的功能。因此,当收件人想通过客户端来获得服务器中发送给自己的邮件时,是不能使用SMTP的。

POP3(第三版的邮局协议)用来将邮件从接收方的邮件服务器传送到接收方的用户代理。这是一个极为简单的邮件访问协议。

使用Telnet访问POP3服务器

# 通过telnet命令建立起一个POP3服务器的链接
telnet smtp.qq.com 110
# 接收到OK表示建立成功
+OK XMail POP3 Server v1.0 Service Ready(XMail v1.0)
# 输入user 用户名
user 2498144289@qq.com
# 接收到OK表示成功
+OK
# 输入pass 邮箱授权码
pass 略
# 接收到OK表示成功
+OK
# 输入list查看邮箱列表
list
# 接收到OK表示成功,并返回所有邮件的序号和长度
+OK
1 30505
2 8021
3 8021
4 64176
5 109297
6 14508
7 12820
8 14608
9 7189
...
# 通过retr来读取某个邮件
retr 1
# 接收到OK表示成功
+OK 30505
Received: from o2.ptr565.wandb.com (o2.ptr565.wandb.com [149.72.42.209])by newxmmxsza6-11.qq.com (NewMX) with SMTP id AC607444for <2498144289@qq.com>; Tue, 03 Jan 2023 19:43:06 +0800
X-QQ-mid: xmmxza6-11t1672746186tqq9z3msg
Sender: bounces+8555476-b12e-2498144289=qq.com@em3714.wandb.com
X-QQ-CSender: bounces+8555476-b12e-2498144289=qq.com@em3714.wandb.com
X-QQ-XMAILINFO: MXYxc+vhTT0ahmcsWylbFQztD+qE2zvqnbrlaDHrcRG/It9udGJPyghW/QNKWjx0zY5cdwm2BK97ZHOuf78SPu7QJQDi7sYPfAjAIXP9
...
# quit
quit
# +OK Bye
+OK Bye

电子邮件协议(SMTP协议,POP3协议)相关推荐

  1. SMTP 和 POP3 协议的区别和联系

    SMTP(Simple Mail Transfer Protocol)和POP3(Post Office Protocol 3)是两种常用的电子邮件协议,用于发送和接收电子邮件.虽然它们都涉及到电子邮 ...

  2. java smtp pop3_手工体验smtp和pop3协议 邮件实现详解(二)

    上篇博客我们简单介绍了电子邮件的发送和接收过程,对参与其中的邮件服务器,邮件客户端软件,邮件传输协议也有简单的介绍.我们知道电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行传递必须 ...

  3. 邮件协议SMTP、POP3和IMAP

    邮件协议SMTP.POP3和IMAP SMTP (发送) POP(离线保存) IMAP(多端操作同一用户) 各种协议的host以及port 发送邮件 同一域下 不同域下 接收邮件 使用的是POP3协议 ...

  4. PHP+socket+SMTP、POP3协议发送、接收邮件

    1.实现SMTP协议的类dsmtp.cls.php: <?php            // 通过socket实现SMTP协议的功能 // version: 1.1 // author : DC ...

  5. 【Java】使用smtp和pop3协议,实现邮件收发

    使用到的包: javax.mail-1.5.1.jar 发邮件的时候 - 向运维: 维护服务器linux - 索要: - smtp服务器地址, smtp.163.com - 发送邮件的端口号: 默认2 ...

  6. javamail - 协议SMTP\IMAP\POP3设置

    资料来自:https://www.tutorialspoint.com/javamail_api/index.htm [SMTP - Simple Mail Transfer Protocol] Na ...

  7. JavaMail学习笔记(一)、理解邮件传输协议(SMTP、POP3、IMAP、MIME)

    电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行传递,就必须遵循一定的规则,这些规则就是邮件传输协议.SMTP协议定了邮件客户端与SMTP服务之间,以及两台SMTP服务器之间发送邮 ...

  8. 邮件协议SMTP/POP3/IMAP——应用层

    一.SMTP协议 1.SMTP协议简介 SMTP称为简单邮件传输协议(Simple Mail Transfer Protocal),目标是向用户提供高效.可靠的邮件传输.它的一个重要特点是它能够在传送 ...

  9. 《计算机网络》——文件传输协议FTP、简单邮件传送协议SMTP、邮局协议POP3、网际报文存取协议IMAP、万维网和HTTP协议、超文本传输协议HTTP

    文章目录 文件传输协议FTP FTP服务器和用户端 FTP工作原理 简单邮件传送协议SMTP 邮局协议POP3 网际报文存取协议IMAP 万维网和HTTP协议 超文本传输协议HTTP HTTP协议的特 ...

  10. 电子邮件相关_邮件传输协议简单了解

    内容简述: 主要是SMTP和POP3/IMAP协议的一些介绍. 2.邮件传输协议: - 2.1 SMTP协议:     ①SMTP协议 (Simple Mail Transfer Protocol) ...

最新文章

  1. ini文件怎么使用_ftp文件下载工具,ftp文件下载工具是怎么使用的?使用指南
  2. java线程间的通讯
  3. android的签名问题
  4. 关于C语言中递归的一点点小问题
  5. java 8是指什么_java中8个基本数据类型到底是指什么?是什么意思,有什么作用?我需要权威的回答,...
  6. 美团都在用的实时应用监控平台,到底有多好用?
  7. win2008删除计算机用户,Windws Srv 2008内置账户
  8. The Double-Checked Locking is Broken Declaration
  9. 引用数据类型Scanner,Random
  10. 韩国韩亚航空数万份乘客身份信息被泄露
  11. 寻求生态保护与矿产开发平衡点 青海给出“绿色方案”
  12. 【Music】Never took the time
  13. 百度云 api java_java实现百度云文字识别接口代码
  14. k8s中本地存储卷emptyDir、hostPath卷
  15. android listview 刷新 闪烁,listview刷新 怎样防止Listview刷新闪烁
  16. 天线匹配与人体之间的关系
  17. python单例模式例子_python单例模式实例分析
  18. js 将简体字转化成繁体字
  19. 字符分割函数strtok
  20. 2022凉茶市场份额

热门文章

  1. 朋友入职中软一个月(外包华为)就离职了,其原因。。。
  2. 阿里AI天池大赛-二手车交易价格预测-回归算法与模型融合
  3. python制作气温分布图_Python案例:查询城市天气并绘制最高气温与最低气温的折线图...
  4. latex 引用公式
  5. json字符串转list集合
  6. Python3 实现淘女郎照片爬虫
  7. Java实现单播,组播,广播
  8. python中的多行语句可以使用反斜杠来实现_Python中的多行语句可以使用反斜杠来表示。...
  9. 8266+DS3231时钟之语音MP3-TF-16P模块使用【五】
  10. python图书馆管理系统设计,千行代码带你学!