计网:动手尝试SMTP交互【利用Telnet发送邮件, 带图片】

文章目录

      • 准备工作
      • 发送仅有ascii码的邮件
      • 发送图片附件
      • 后记

准备工作

1.如图,勾选telnet客户端
在这里插入图片描述

2.邮箱开启第三方登录服务

在这里插入图片描述
开启服务后,会给一个授权码。授权码是QQ邮箱用于登录第三方客户端/服务的专用密码,适用于登录以下服务:POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV 服务。登录时,请在第三方客户端的密码输入框里面填入授权码进行验证。(不是填入QQ的密码)。发送邮件服务器: smtp.qq.com。

发送仅有ascii码的邮件

win+R打开cmd,输入telnet smtp.qq.com 25。

C:\Users\23209>telnet smtp.qq.com 25(这是cmd命令行)
220 newxmesmtplogicsvrszc5-2.qq.com XMail Esmtp QQ Mail Server.
helo qq.com(向qq.com服务器问好以确认连接)
250-newxmesmtplogicsvrszc5-2.qq.com-30.174.48.222-3289458
250-SIZE 73400320
250 OK
auth login(登录命令)
334 VXNlcm5hbWU6
MjMy██████████████5jb20=(发信邮箱地址232████421@qq.com的base64编码,用黑条隐藏一部分,下同)
334 UGFzc3dvcmQ6
c3hs██████████████FkYQ==(发信邮箱的授权码的base64编码)
235 Authentication successful
mail from: <232████421@qq.com>(发信邮箱)
250 OK
rcpt to: <321████662@qq.com>(收信邮箱)
250 OK
data(告诉服务器我接下来发送的是邮件内容)
354 End data with <CR><LF>.<CR><LF>.
Subject:A Email for You(邮件标题)
From:232████421@qq.com(发信邮箱,必须和刚刚的保持一致)
To:321████662@qq.com(发信邮箱,必须和刚刚的保持一致)
(空一行)
Do one thing at a time, 
and do well.(邮件正文)
.(点号表结束。发完这一行,321████662@qq.com立即收到一封邮件,题名为A Email for You,内容为刚刚的邮件正文,加上一个点号)
250 OK: queued as.
quit(断开与服务器的连接)
221 Bye.遗失对主机的连接。C:\Users\23209>

base64编码转换器

发送图片附件

我们要发送的图片假定就是这张:
在这里插入图片描述
先把它转为base64,网站
在这里插入图片描述

然后把生成的字符串复制下来,它很长,记得去掉开头的data:image/jpeg;base64,,这个前缀用在css中的,Email消息不需要这个前缀。

data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AX……太长了省略一些,完整的在下边有……zCcrgkZhjNsNgwrMBuGFZgNwwr8F6sFx2H1CeEpAAAAAElFTkSuQmCC

在记事本中编辑消息,如下。

Subject:A Picture
From:232████421@qq.com
To:321████662@qq.com
MIME-Version:1.0
Content-Transfer-Encoding:base64
Content-Type:image/jpeg;name="123.jpg"iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAPJElEQVR4Ae3BzcvmdaHA4ev3u59xRket1F7EZhKJokWgRghZmkQUJa0UElzVojbtatc2GAjJFr1A5B8QuGhREIS6kCyhF8sEKUQnTIxGGntGR+eZ+3Omcyg6Hl8mz9zj3Pfzva4JOUddfPHFnn32WcP6mZBhOMNmw7ACs2FYgdm/mabJJpqmyXB2TcgwnGGz4Q0zTZNNNSHDcIbNhmEFZsOwArNhWIHZMKzAbBhWYDYMKzAbhhWYDcMKzIZhBWbDsAKzYViB2WCaJo899phvfOMbFouF4f9vQna5aZosl0v/dOTIEQcPHvTcc88ZXp/Z8H9ceumljh075nvf+57h9ZmQQeXl/PKXv/TBD35QZTh9E7LLTdNkuVx6JZWtrS3L5dJwembDa5qmybFjx5x//vmG0zMbVJ5++mmvZt++fX79618bTs9s+G/f/va3vZb3vve9rrvuOsNrm5DBdddd5+c//7nTMU2T4dXNBtM0+etf/+p0HTp0yPDqJmQwTZMXX3zR1taW11JZLBYqw8ubDf+tcvfddzsd0zS56qqrDK9sNvzLoUOHnK7FYmF4ZbPhXx566CEnTpxwOirDK5sN/1LZu3ev03H06FHDK5sN/0vl4x//uOVy6dX85S9/Mby6EEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCF199dUtl8tezjPPPBNCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhNBseFm/+c1vLBYLR48e9VJ33XWX4dXNhldUefOb3+zrX/+6f/f8888bXlsIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEELo8ssv79ixY/3D7bffHkIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEkFNCCCGEEEIIITTPcwghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBaLRQghhNA0TT388MPt2bMnhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgihCRmGM2w2DCswG86YaZpM02RgNpyWaZq81DzPbrzxRnfffbfHH3/ccrm0XC7de++9rrnmGvM8281CCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhKZp6oILLujzn/98r8fzzz/f1tZWCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYScEkIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCE3T1AUXXNCTTz7Zf2pnZ6flctk/Pffcc73rXe8KIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhJwSQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEII/fSnP+2FF17oP3HixImOHz/ekSNHOnHiRP9uZ2ena665JoQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhJBTQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEII3Xnnna3K3r17QwghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCyCkhhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIXTnnXe2Svfee28IIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgg5JYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCF03XXXtWqXX355CCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIOSWEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgih888/v+Vy2SrdfPPNIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhJwSQgghhBBCCCGEEEIIIYQQQvM8hxBCCCGEEEIIIYQQQgghhBBCCCGEEELooYcealWWy2XXX399CCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIeSUEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghdO2117ZKt956awghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEnBJCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIITTPc48//nirct9994UQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCE3ILvXud7/bH/7wB2fKyZMnLRYL/7RYLCyXS7vRhJymffv2OX78uE2xs7NjsVhYhYsuusj29rbdavYfOH78uE3x5S9/2WKxsAo//vGPbW9v281mu9Szzz5rFSqf/vSn7XazXWjv3r1uu+02q/D73//ewGwXmufZhz/8YauwXC4NzNbUFVdc4fW65JJLbG1tGVZntqaefPJJr9dVV11lVaZpMjDbha688kqrMk2Tgdku9NnPftawWhOyy2xvb9u/f79VePbZZ73pTW+y2812of3791uViy++2KFDhwyEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQmfDLbfcEkIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhJwSQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCJ0tt912WwghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEkFNCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIobPpi1/8YgghhBBCCCGEEEIIIYQQQtM0hRBCCCGEEEIIIYQQQgghhBBCCCGEEEJOCSGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYTOtm9961shhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGE0ITsMpU3wkUXXWR7e9tuMBvOmr///e/uuusue/bssekmZJepvJF2dnbcc889PvGJT9hUs13k4MGDTpw44Y22tbXlhz/8oU02IbvAgQMHHD582LlimiabbLYL3HTTTQ4fPmw4e2Yb7rbbbnPPPfc4l9xxxx12gxBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCKHrr7++c9HHPvaxEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYRmG+rGG290//33+4fKueT222+36SZkw1x88cWefvpp+/bt8w/L5dI8z84l0zTZZLMN9Mgjj9i3b59/mufZueaJJ56wyWYb5o477nDFFVc41x08eNDb3/52m2pCNsSVV17pj3/8o8ViYR386le/8oEPfMAmmm2QH/zgBxaLhVWqnCnXXnutq6++2iaakA3wtre9zdNPP+1M2NnZsbW15WyozPNs08zeIBdeeKEz6bHHHnOmbG1t2d7edjZM02T//v02zewNsr297Uy55ZZb7N+/35l04YUXOlt+9rOf2TQTsuaOHDnikksusc6mabJJZmvuIx/5iEsuucS6+8IXvmCTTMgae+aZZ7zlLW+xCaZpsikmZE1N02S5XNoUe/bssbOzYxPM1tgnP/lJm2SxWNgUszV255132iRXXHGFTTFbU9M0OXjwoE3y1a9+1aaYkDX0nve8x6OPPmqTnDhxwnnnnWcTzNbUZz7zGZtmz549NsVsTX3qU58y/F/TNDkXTMiamefZiy++aLFY2DTTNNkEszW0WCwsFgub5tixYzbFbA2dPHnSJvr+979vU0zImpnn2cmTJ22aSy+91DPPPGMTzNbQcrn0yCOPWFeVl3Ps2DGbYramHn/8cetqmiYv9fzzz9vZ2bEpZmvqd7/7nU1y8803O3nypE0xW1M/+clPbIo//elP7rnnHptkQtbQNE2OHz/uvPPOs+4+9KEPeeCBB2yS2ZqqPProo9bdn//8Zw888IBNMyFr6uDBg5544gnramdnx2WXXebo0aM2zWyNHT582Pb2tnX1pS99ydGjR22qEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCF06623to6efPLJEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIITQha2yxWHjqqae89a1vtS4efvhh73//+22yCVlz73jHOzz11FPWwZEjR1x55ZW2t7dtsgnZAIvFwt/+9jcXXnihc9ULL7xg3759doPZhjh58qR3vvOdHn74Yeeiw4cPu+yyy+wmIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYTQ5z73uc4l3/zmN1ssFiGEEEIIIYQQQgghhBaLRQghhBBCCCGEEEIIIYQQQgghhBBCCCGEEHJKCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGE9u/f3/33398b5ciRI33lK18JIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBySgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBA6cOBA3/nOdzoblstlDz74YDfddFMIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCE7JLLBYLN9xwg+9+97sOHDjgH5bLpV/84he+9rWvue+++yyXSy/noosu8r73vc9HP/pRN9xwg71793rwwQf99re/9aMf/chzzz1nuVwa/seEDMMZNhuGFZgNwwrMXmKaJsPw/zV7icoqTdNk2HwTMgxn2GwYVmA2DCswG4YVmA3DCsyGYQVmw7ACs2FYgdkwrMBsGFZgNgwrMBuGFZgNwwrMhmEFZsOwArNhWIHZMKzAbBhWYDYMKzAbhhWYDcMKzIZhBWanaWtryzCcrgkZhjNsNgwrMBuGFZgNwwr8F6sFx2H1CeEpAAAAAElFTkSuQmCC
.

还是按照刚刚与服务器交互的方式,直到发送完消息。发现邮箱中立刻收到了这张图片。

在这里插入图片描述
接下来还可以编辑混合消息,就是既有纯文本也有附件。

后记

本文用到的工具

图片转base64

扩展阅读
什么是SMTP/IMAP服务
这篇文章讲解了什么是base64
这篇文章中有文本与附件混合的Email消息代码

参考资料

计算机网络MOOC,哈工大
MIME笔记
利用Telnet登录qq邮箱发送邮件——SMTP协议学习

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2809857.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

自定义el-upload 上传文件

前言 最近在做一个文件上传的功能&#xff0c;后端接口写好了、发现前端上传文件的页面不会写……&#xff08;我很笨的&#xff09;然后我就找啊找发现element有个组件是<el-upload/>能直接上传文件。我就想直接用拿来改改改成自己想要的&#xff0c;可是就是这样我花了…

银河麒麟操作系统安装Anaconda

下载 首先确认需要安装的版本 uname -maarch64https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?CM&OD 在上面网址中下载相应的版本 下载后&#xff0c;上传到服务器 安装 bash Anaconda3-2023.09-0-Linux-aarch64.sh 点击enter&#xff0c;继续 输入yes同意许…

MongoDB之客户端工具与核心概念及基本类型篇

MongoDB之客户端工具与核心概念及基本类型篇 文章目录 MongoDB之客户端工具与核心概念及基本类型篇1. MongoDB是什么?1. 关于MongoDB2. 相关客户端工具1. MongoDB Compass2. Studio 3T3. Navicat for MongoDB4. NoSQL Manager for MongoDB Professional 2.MongoDB相关概念2.1 …

苹果 CMS 大橙子 vfed 5.0优化版

大橙子模版算是在苹果 CMS 众多主题里&#xff0c;较为亮眼的一款了&#xff0c;主题简洁&#xff0c;功能众多&#xff0c;非常的齐全。 今天分享的就是大橙 5.0 版本模板&#xff0c;完美破解&#xff0c;自测无后门&#xff0c;无广告不影响任何功能体验性。下载地址&#…

恒峰-高压森林应急消防泵:守护绿色生命线

随着城市化进程的加快&#xff0c;森林覆盖率逐渐降低&#xff0c;人们对于森林资源的保护意识也在不断提高。然而&#xff0c;一旦发生森林火灾&#xff0c;将会给生态环境带来极大的破坏。因此&#xff0c;如何提高森林火灾的防治能力&#xff0c;成为了亟待解决的问题。而高…

Spring Boot Profiles简单介绍

Spring Boot application.properties和application.yml文件的配置 阅读本文之前&#xff0c;请先阅读上面的配置文件介绍。 Spring Boot Profiles是一个用于区分不同环境下配置的强大功能。以下是如何在Spring Boot应用程序中使用Profiles的详细步骤和代码示例。 1. 创…

HarmonyOS4.0系统性深入开发36 媒体查询(mediaquery)

媒体查询&#xff08;mediaquery&#xff09; 概述 媒体查询作为响应式设计的核心&#xff0c;在移动设备上应用十分广泛。媒体查询可根据不同设备类型或同设备不同状态修改应用的样式。媒体查询常用于下面两种场景&#xff1a; 针对设备和应用的属性信息&#xff08;比如显…

密码学及其应用(应用篇15)——0/1背包问题

1 问题背景 背包问题是一个经典的优化问题&#xff0c;在计算机科学和运筹学中有着广泛的应用。具体到你提到的这个问题&#xff0c;它是背包问题中的一个特例&#xff0c;通常被称为0/1背包问题。这里&#xff0c;我们有一系列的正整数 &#xff0c;以及一个正整数&#xff0c…

opengles 绘制图元 ——glDrawArrays() 相关API介绍 (十)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、opengles3.0 绘制图元介绍二、绘图图元 API 介绍1. glDrawArrays()1.1 glDrawArrays()函数原型1.2 GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN 三者的区别1.3 使用GL_TRIANGLES, G…

java-map集合的基本使用

一、HashMap集合 1.HashMap示意图 2.HashMap的特点 3.HashMap的常用方法 ①.put(K key, V value) 将键&#xff08;key&#xff09;/值&#xff08;value&#xff09;映射存放到Map集合中 public class Test {public static void main(String[] args) {HashMap<String, I…

【笔记】【电子科大 离散数学】 2.命题

文章目录 数理逻辑定义 命题定义不是命题的例子 原子命题和复合命题定义约定 命题联结词否定联结词定义例子真值表 合取联结词定义例子真值表 析取联结词定义例子 蕴含联结词定义例子真值表 等价联结词定义例子真值表 命题符号化及其应用速查表格优先级复合命题符号化布尔检索演…

【大数据】Flink SQL 语法篇(四):Group 聚合、Over 聚合

Flink SQL 语法篇&#xff08;四&#xff09;&#xff1a;Group 聚合、Over 聚合 1.Group 聚合1.1 基础概念1.2 窗口聚合和 Group 聚合1.3 SQL 语义1.4 Group 聚合支持 Grouping sets、Rollup、Cube 2.Over 聚合2.1 时间区间聚合2.2 行数聚合 1.Group 聚合 1.1 基础概念 Grou…

【汽车电子】万字详解汽车标定与XCP协议

XCP协议基础 文章目录 XCP协议基础一、引言1.1 什么是标定1.2 什么时候进行标定1.3 标定的意义 二、XCP协议简介2.1 xcp简介2.2 XCP如何加快开发过程&#xff1f;2.3 XCP的主要作用 三、XCP工作过程3.1 工作过程3.2 通讯模型3.3 测量与标定 四、XCP报文解析4.1 数据包报文格式4…

vue基础操作(vue基础)

想到多少写多少把&#xff0c;其他的想起来了在写。也写了一些css的 input框的双向数据绑定 html <input value"123456" type"text" v-model"account" input"accou" class"bottom-line bottom" placeholder"请输入…

pytorch -- torch.nn下的常用损失函数

1.基础 loss function损失函数&#xff1a;预测输出与实际输出 差距 越小越好 - 计算实际输出和目标之间的差距 - 为我们更新输出提供依据&#xff08;反向传播&#xff09; 1. L1 torch.nn.L1Loss(size_averageNone, reduceNone, reduction‘mean’) 2. 平方差&#xff08;…

探索水下低光照图像检测性能,基于YOLOv6全系列【n/s/m/l】参数模型开发构建海底生物检测识别分析系统

底这类特殊数据场景下的检测模型开发相对来说比较少&#xff0c;在前面的博文中也有一些涉及&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 试探索水下目标检测&#xff0c;基于yolov5轻量级系列模型n/s/m开发构建海底生物检测系统》 《基于YOLOv5C3CBAMCBAM注意力…

IAA增收如何更上一层楼?NetMarvel 4招让您致胜全球

成本上涨&#xff0c;收益收紧&#xff0c;IAA厂商的增收似乎越来越难走&#xff1f;但在重定向广告被玩得如火朝天的当下&#xff0c;IAA一定是持续增长的市场。广告主、品牌方的需求只会越来越多&#xff0c;你只要确保圈住真实用户&#xff0c;流量即变现是迟早的事。 海外…

SocketWeb实现小小聊天室

SocketWeb实现小小聊天室 消息推送的常见方式轮询长轮询SSE&#xff08;server-sent event&#xff09;&#xff1a;服务器发送事件WebSocketWebSocket简介WebSocket API 实现小小聊天室实现流程消息格式客户端-->服务端服务端-->客户端 消息推送的常见方式 轮询 浏览器…

matlab经验模式分解的R波检测算法

1、内容简介 略 56-可以交流、咨询、答疑 2、内容说明 略 心血管疾病是威胁人类生命的主要疾病之一&#xff0c;而心电信号&#xff08;electrocardiogram, ECG&#xff09; 则是评价心脏功能的主要依据&#xff0c;因此&#xff0c;关于心电信号检测处理的研究一直为各方所…

APIFox-自动获取登录状态操作

APIFox-自动获取登录状态操作 概述 作为纯后端开发码农&#xff0c;每次接口开发完的调试很重要&#xff0c;因此每次重复的手动获取登陆状态Token或者直接放行就太麻烦了。 APIFox提供了前置操作&#xff0c;可以很方便的自动获取登录状态&#xff0c;节省大量重复劳动时间。…