首页 > 其他分享 >网工应用层:电子邮件Email、SMTP协议与使用Telnet发送电子邮件

网工应用层:电子邮件Email、SMTP协议与使用Telnet发送电子邮件

时间:2023-08-01 09:34:05浏览次数:45  
标签:SMTP Telnet 发送 服务器 电子邮件 邮件 客户端

参考资料:
https://www.bilibili.com/video/BV1c4411d7jb?p=72&vd_source=e66dd25b0246f28e772d75f11c80f03c
湖科大的高军老师做的计算机网络课,去年选修的计网全靠高老师,生动,举例丰富,配套实验课,无废话纯干货,单推一波!

电子邮件介绍

电子邮件(E-mail)是一种用电子手段提供信息交换的通信方式,是互联网应用最广的服务。通过网络的电子邮件系统,用户可以以非常低廉的价格(不管发送到哪里,都只需负担网费)、非常快速的方式(几秒钟之内可以发送到世界上任何指定的目的地),与世界上任何一个角落的网络用户联系。
电子邮件可以是文字、图像、声音等多种形式。同时,用户可以得到大量免费的新闻、专题邮件,并轻松实现轻松的信息搜索。电子邮件的存在极大地方便了人与人之间的沟通与交流,促进了社会的发展。

电子邮件系统

电子邮件系统采用客户/服务器方式。

电子邮件系统的三个主要组成构件:用户代理、邮件服务器和电子邮件所需的协议。

用户代理(LDA):用户与电子邮件系统的接口,又称为电子邮件客户端软件。
现在的很多邮件客户端都可以设置邮件代理这一选项,比如hotmail、网易邮箱大师等。

邮件服务器:电子邮件系统的基础设施。Internet上所有的ISP都有邮件服务器,其功能是发送和接收邮件,同时还要负责维护用户的邮箱。

如图所示,是电子邮件的发送流程:

电子邮件发送流程

  1. 发送方通过用户代理,使用SMTP发送邮件,这一过程遵循TCP协议;
  2. 邮件先到达发送方的邮件服务器,服务器中登陆SMTP客户,使用SMTP发送邮件。这一过程同样使用的是TCP协议;
  3. 接收方通过SMTP服务器接收邮件,随后转送至POP3服务器,使用POP3读取邮件。接收方(同样也是POP3客户)通过用户代理最终接收邮件。

简单邮件传送协议(SMTP)的工作原理

发送方和接收方都使用TCP协议进行连接,这一点在刚刚已经阐明了。注意端口号为25。

发送方邮件服务器就像一个邮筒。用户把待发送的邮件放进这个“邮筒”里,服务器周期性地扫描邮件缓存,如果发现有待转发的邮件,那么服务器便会“捡起”这一封邮件,通过TCP发送给接收方的服务器。

整个工作流程概述起来比较简单。我们来看具体的TCP握手流程:

发送方和接收方使用命令和应答的模式握手。其中,命令有14条,应答信息有21种。

  1. 首先,接收方会主动推送一条应答220,告知其他服务器自己服务就绪。

  2. 客户端向服务器说明身份,告知自己SMTP服务器的域名。

HELO url
// 这里的URL即发送方SMTP邮件服务器的域名。
  1. 之后若身份有效,应答250。否则发回其他代码,如421,表示服务不可用。
  2. 客户端告诉服务器邮件来自何方:
MAIL FROM:url
//这里的URL即用户自己的邮箱域名。
  1. 接收方服务器若认为合理,则发回250,否则发回其他错误代码。
  2. 客户端告诉服务器邮件需要去往何地:
RCPT TO:url
//这里的url即收件人的地址。
  1. 若该邮箱存在,发回应答代码250,否则发回其他错误代码。
  2. 客户端告诉服务器自己准备发送邮件内容:DATA
  3. 若准备好接收,发回应答代码354,否则发回其他错误代码。
  4. 客户端向服务器发送邮件内容:邮件内容,并发送结束符.
  5. 若收件成功,发回应答代码250,否则发回其他错误代码。

需要注意的是,真实的情况会比这复杂一丢丢,因为我们省略了认证过程和应答代码后面的简单描述信息。并且不同的SMTP服务器给出的相同应答代码的描述信息可能不同。

电子邮件的信息格式

电子邮件的信息格式是在RFC 822中单独定义的。2008年,该RFC文档更新为RFC 5322。

一个电子邮件有信封和内容两个部分,内容又由首部和主体构成。

首部中,我们写有From、To、Cc(抄送)和Subject(主题)这四个关键字。邮件系统将自动提取所需信息,并将其写在信封上,主体才是用户想要发送的内容。

SMTP协议的特点

SMTP协议有如下特点:

  1. SMTP协议只能传送ASCII码文本数据,不能传送可执行文件或者其他的二进制对象。
  2. SMTP协议不能满足传送多媒体邮件(例如带有图片、音频或视频数据)的需要。并且,其他非英语国家的文字(中文、俄文、西语等等)也无法用SMTP传送。

为了解决无法传送这些文本的问题,1992年,提出了多用途因特网邮件扩展MIME(Multipurpose Internet Mail Extensions)。MIME部署在发送方将邮件放到SMTP服务器的过程中,它可以转换非ASCII码为ASCII码。它增加了5个新的邮件首部字段,这些字段提供了有关邮件主体的信息。;又定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化;并且定义了传送编码,可对任何内容格式进行转换,不被邮件系统改变。作为一种扩展,MIME同样应用于HTTP协议中。

常用的邮件读取协议

POP3和IMAP4都采用基于TCP连接的客户/服务器方式。POP3使用端口110,IMAP4使用端口143。

邮局协议POP

全称Post Office Protocol,POP3是其第三个版本,是因特网正式标准,非常简单、功能有限的邮件读取协议。用户只能以下载并删除方式或下载并保留方式从邮件服务器下载邮件。

因特网邮件访问协议IMAP

全称Internet Mail Access Protocol,IMAP4是其第四个版本,目前还只是因特网建议标准。

基于万维网WWW的电子邮件

通过浏览器登录(提供用户名和口令)邮件服务器万维网网站就可以撰写、收发、阅读电子邮件。用户无需安装专门的用户代理程序,只需使用通用万维网浏览器即可。同时也不需要将邮件下载到本地进行管理,这一过程可在邮件服务器网站上实现。

使用Telnet客户端发送邮件(Windows)

Telnet是什么?
Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。

以Win11为例,启用Telnet客户端需以下步骤:

首先搜索控制面板,找到“程序”——“程序与功能”——“启用或关闭Windows功能”:

在这里插入图片描述
下拉找到“Telnet客户端”,点击勾选:

在这里插入图片描述
然后打开cmd输入telnet,即进入命令行:

在这里插入图片描述
但是我们发邮件就不用这样做了。我们回到cmd,以qq邮箱为例,输入

telnet smtp.qq.com 25

见到220应答则判定已经连接成功。

输入helo命令挥手,helo后面的信息可随意写(ASCII码范围内),但不能不写,否则会报错:

在这里插入图片描述
这里看到250也是表示接收成功了。

输入auth login,表示登陆,返回334接收成功:

在这里插入图片描述
后方这一串代码可用base64解码工具解码,得出username,也就是用户名,那么我们输入自己的邮箱。注意需要再转码(就不展示邮箱地址了),否则服务器看不懂:在这里插入图片描述

在这里插入图片描述
输入自己的邮箱密码,同样也需要转码:

注意这里容易出现535 fail login报错,为什么呢?你可能把你的qq密码当做smtp密码了,但其实不是的。qq邮箱的smtp服务需要手动开启,可通过设置找到“启用IMAP/SMTP服务”,根据提示操作后拿到一次性密码。

在这里插入图片描述

235即登陆成功:

在这里插入图片描述
输入发信人邮箱:

mail from:<[email protected]>

输入收件人邮箱:

rcpt to:<[email protected]>
//可以填多个

成功应答250。

在这里插入图片描述

输入 data,输入:

From:<发送者的email>
To:<接受者的email>
Subject:<发送主题》
空一行
<发送内容>
. (输入点代表编辑结束)

250 ok即可发送邮件。

但不建议这么发邮件,为什么呢?首先取得一次smtp密码就需要发送一次短信,但是这样很贵,发一次0.1元,非常不划算,而且超时即丢包。我们一般发邮件使用网页客户端就可以了,大道化简,这也体现了万维网电子邮件管理的伟大之处,大大减少了不必要的时间,提升了交流的效率。

标签:SMTP,Telnet,发送,服务器,电子邮件,邮件,客户端
From: https://www.cnblogs.com/xiaoyeah/p/17595612.html

相关文章

  • centos7关闭防火墙后只有22端口可以telnet的解决方法
    1、问题描述防火墙已经关闭22端口可以telnet其他端口无法telnet2、解决方法注意:下列命令要用root账号/权限执行2.1、开启防火墙systemctlstartfirewalld2.2、添加要开放的端口该命令以8081端口为示例firewall-cmd--add-port=8081/tcp2.3、重新加载防......
  • Telnet小实验
    Telnet小实验实验环境两台windowsXP虚拟机 操作命令netstarttelnet//开启telnet服务,也可以再service.msg里面手动打开,也可以在c盘里的system32文件夹里面打开telnet.exe|||||||但win10好像自带就有netstat  //看服务是否打开用这两行命令打开两台虚拟机的telnet服......
  • 使用ASP.NET Core Minimal API和MailKit发送电子邮件
    步骤1:创建新项目通过以下命令在终端中创建一个新的ASP.NETCoreWebAPI项目:dotnetnewwebapi-oSendingEmail由于我们正在使用MinimalAPIs,因此删除不必要的Controller文件夹和WeatherForecast类。步骤2:定义电子邮件数据传输对象(DTO)为了将数据从我们的API传递到邮件服务......
  • 通过iptables转发后的端口telnet通但是curl不通的问题
    今天遇到一个问题,一个隔离安全域的服务器需要访问承载网上的gitlab,但是无法直接做互通,所以需要通过iptables转发一次。完成iptables规则后,发现telnet端口是通的但是curlhttp:地址加端口就会返回不通。于是不停的改iptables规则,甚至放行forword规则,最后检查发现是存在外网的代理(代......
  • Telnet qsnctfwp
    Windows安装Telnet在控制面板的程序和功能中选择打开或关闭Windows功能启用Telnet客户端并单击确认退出启动终端,输入命令telnet打开Telnet客户端在客户端中输入openchallenge.qsnctf.comxxx,其中xxx是端口号依次输入账号root和密码toor使用命令cd/进......
  • java执行telnet
    Java执行Telnet的流程在Java中执行Telnet操作,可以通过使用Java的Socket类来实现。下面是整个流程的步骤展示:步骤描述1创建一个Socket对象,并指定Telnet服务器的IP地址和端口号2获取输入输出流,用于与Telnet服务器进行通信3发送命令到Telnet服务器4获取服务器......
  • telnet
    telnet登录远程主机和管理(测试ip端口是否连通)补充说明telnet命令用于登录远程主机,对远程主机进行管理。telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。但仍然有很多别的系统可能采用了telnet方式来提供远程登录,因此弄清......
  • Android之adb安装busybox使用wget、telnet等服务
    二、通过busybox安装使用wgetbusyboxwget1也可以直接输入wget,不用加busybox了三、通过busybox使用telnet服务(1)进入root权限su1(2)每次开启adbshell后都需要设置环境变量才能重启busybox服务(没有安装busybox可以看DHCPv6之GitHub项目Android侧验证)exportPATH=/data/busybox:......
  • Windows Intelnet 属性中的隐私弹出窗口阻止程序设置设置为高级别
    要通过批处理将WindowsIntelnet属性中的隐私弹出窗口阻止程序设置设置为高级别,你可以使用以下命令:REGADD"HKCU\Software\Microsoft\Windows\CurrentVersion\InternetSettings\Zones\3"/v1406/tREG_DWORD/d3/f这个命令会将注册表键值1406设置为3,表示阻止级别设置......
  • 使用telnet来调试游戏
    telnet是什么Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力但是,telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。但仍然有很多别的系统......