前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Telnet 使用 SMTP 服务登录邮箱并发送邮件

Telnet 使用 SMTP 服务登录邮箱并发送邮件

原创
作者头像
AnieaLanie
发布2021-12-30 11:17:49
5K0
发布2021-12-30 11:17:49
举报
文章被收录于专栏:铁子的专栏铁子的专栏

步骤:

1、使用telnet连接smtp服务器

2、发送一个helo或者ehlo指令

3、验证用户(使用邮件名登陆)

4、使用mail命令准备发送邮件

5、使用rcpt命令指定对方邮箱地址

6、使用data命令开始输入内容

7、输入test或者hello world类似字样(即邮件内容)

8、输入邮件内容结束标志.

1. SMTP协议

1.1 SMTP简介

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,尽管邮件服务器可以用SMTP发送、接收邮件,但是邮件客户端只能用SMTP发送邮件,接收邮件一般用IMAP 或者 POP3 。邮件客户端使用TCP的25号端口与服务器通信。

代码语言:javascript
复制
SMTP在1982年首次被定义在  RFC 821 ,在2008它被更新为扩展的SMTP协议,补充在文件 RFC 5321 ,扩展的协议是目前使用最广泛的协议。
1.2 SMTP命令
  1. EHLO(Extended hello)or HELO(hello) 这个命令用于说明自己是SMTP客户端身份,参数包含客户端的域名(domain)。其中EHLO是SMTP补充协议( RFC 5321 )中用于替换HELO命令的新命令,协议规定服务器支持EHLO命令的时候,尽量使用EHLO命令,为了兼容以前的版本,要求服务器继续支持HELO命令。如果收到回复OK,说明发送者和接收者处于初始状态,所有的状态表和缓存区都被清零。
  2. MAIL 这个命令的参数是发送者邮箱<reverse-path>,参数中有 FROM 关键字,这个命令会清空之前的发送者邮箱(the reverse-path buffer)、接收者邮箱(forward-path buffer)和邮件数据(the mail data buffer)。
  3. RCPT (recipient) 用于指定一个邮件接收者,参数中有TO 关键字,指定多个接收者通过重复使用这个命令。
  4. DATA 这个命令没有参数,告诉服务器接着要发送邮件内容。 邮件内容包含邮件标题项(message header section )和邮件正文(message body), 标题项(Header Fields )是以项目名(field name)为行的起点,接着是冒号(":"),跟着是内容(field body)以回车换行结束(CRLF).邮件的标题区与正文区需要用一个空行隔开。两者共同组成DATA命令的参数,正文区用只有一个点字符“.”的单行来结束。
  5. SEND 初始化邮件事务,邮件数据被转发到一个或多个终端。
  6. SOML(SEND OR MAIL) 初始化邮件事务,邮件数据被转发到一个或多个终端或邮箱。
  7. SAML(SEND AND MAIL) 初始化邮件事务,邮件数据被转发到一个或多个终端和邮箱。
  8. RSET(RESET) 这个命令用来终止邮件事务(mail transaction),任何已经存储的发送者、接收者、邮件数据(mail data)信息都被丢弃,缓存区被清零。
  9. VRFY(VERIFY) 验证邮箱是否存在,如果参数是用户名,则返回一个全名(如果存在)。
  10. EXPN(EXPAND) 验证邮箱列表
  11. HELP 返回帮助信息,带参数时候,返回指定的帮助信息。
  12. NOOP 这个命令指示服务器收到命令后不用回复 “OK”
  13. QUIT 关闭传输通道。
  14. TURN 交换邮件发送者和接收者的角色,这个命令用在建立连接成本高的时候,TCP连接不用这个命令。这个命令会产生安全问题,只有在服务器可以被授权作为客户端时候才能用。
1.3 SMTP步骤

第一步是MAIL命令,<reverse-path>包含发送者邮箱( <SP>是空格,<CRLF>是回车换行)

  • MAIL <SP> FROM:<reverse-path> <CRLF> 这个命令告诉接收者,开始一个新的邮件事务,重置所有的状态表和缓存区,包括接受者信息和邮件数据,<reverse-path>被用于报告错误,如果命令被接受,返回250 OK

第二步是 RCPT命令

  • RCPT <SP> TO:<forward-path> <CRLF> 这个命令提供一个接收者邮箱,如果被接受返回250 OK,如果不能被识别,返回550 Failure,这个第二步可以被重复多次。

第三步是 DATA命令

  • DATA <CRLF>

2. SMTP发送邮件实验

2.1 实验准备

准备163邮箱两个,开启SMTP:

开启服务:

2.2 实验步骤

1.使用telnet 连接smtp服务器

telnet smtp.163.com 25 //直接进入回显模式

2.查看连接是否建立

helo localhost

3.登录

auth login

输入账号和授权密码,账号和授权密码要以base64编码的形式输入,授权密码不是邮箱密码,要在163邮箱主页开启邮箱的SMTP服务后再获取

在线base64编码:网站

邮箱:######

获取授权密码:

授权密码:######

接下来输入邮件信息:

其中mail from和rcpt to必须是发送邮箱和接收邮箱的账号,否则会被认为是无效邮件无法发送:

代码语言:javascript
复制
#邮件头,必须是正确的
mail from: <aa27975599672021@163.com>
rcpt to:  <aa27975599672022@163.com>
#开始输入邮件正文
data
from: <aa27975599672021@163.com>
to:  <aa27975599672022@163.com>
subject:hello,aa27975599672022@163.com
#空一行
hello
#空一行,后面输入一个点后回车表示结束
.

发送成功:

在网页邮箱中查看:

接收的邮件:

3. 参考

[1] 使用telnet登陆smtp服务,使用163发邮件

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. SMTP协议
    • 1.1 SMTP简介
      • 1.2 SMTP命令
        • 1.3 SMTP步骤
        • 2. SMTP发送邮件实验
          • 2.1 实验准备
            • 2.2 实验步骤
            • 3. 参考
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档