手工发送邮件-SMPT协议

如何手工发送电子邮件?我也是忽然想玩一玩哈哈哈,有错误欢迎指正!

  • 本文基于Ubuntu22.04制作,Windows可能需要去 控制面板 > 程序 > 程序与功能 > Windows功能 启用 Telnet 客户端 才能继续, 详见这里,点我
  • 本文使用网易163邮箱进行操作,其他邮箱大同小异,遇到问题搜一下~
  • 若有异常请查看后面的 “排错” 部分,有疏漏欢迎补充!最好先去搜一下,这是最快的解决办法

登录邮件服务器

SMTP是一个相对简单的基于文本的协议。我们可以透过协议,指定了一条消息发送至一个或多个接收者(在大多数情况下被确认是存在的),然后消息文本会被传输。我们可以很简单地通过telnet程序来测试一个SMTP服务器。SMTP主要使用TCP25端口。要为一个给定的域名决定一个SMTP服务器,需要使用DNS的MX记录详见这里,点我

  1. 首先连接到163的smtp服务器,我们使用25端口

    1
    telnet smtp.163.com 25

    Trying 123.126.97.113…
    Connected to smtp.163.com.
    Escape character is ‘^]’.
    220 163.com Anti-spam GT for Coremail System (163com[20141201])

  2. 跟服务器打个招呼吧!(选择模式)

    1
    helo smtp.163.com

    250 OK

  3. 现在我们来登录

    1
    auth login

    334 dXNlcm5hbWU6

Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据,它并非加密数据,所以称为“编码”,详见这里,点我

  1. 现在输入base64编码过的邮箱(去网上搜Base64工具/使用命令行编码)
    得到类似下面这样的东西
    1
    c2VuZGVyQDE2My5jb20=

    334 UGFzc3dvcmQ6

163邮箱不支持直接使用密码登录,需要前往网页端邮箱 设置 > 通用设置 > POP3/SMTP/IMAP 中开启IMAP/POP3/SMTP服务,然后在下方 新增授权密码 处生成授权密码,使用授权密码登录

  1. 好耶!现在输入base64编码过的密码(令牌),同上,得到如下面这样
    1
    YXV0aG9yaXphdGlvbiBjb2Rl

    235 Authentication successful

发送一个邮件

  1. 现在登录成功了!我们来尝试发送一个邮件,首先按照如下格式输入登录邮箱

    1
    mail from:<sender@163.com>

    250 Mail OK

  2. 我们再来输入目标邮箱

    1
    rcpt to:<test@elaina.me>

    250 Mail OK

  3. 告诉服务器我们要开始输入内容了!

    1
    data

    354 End data with .

  4. 内容部分,Subject是主题

    1
    2
    3
    Subject: test mail
    Hi, test2
    This is a test mail, you don't reply it.
  5. 换行后再输入

    1
    .

    并按 Enter 键发送邮件!

    250 Mail OK queued as smtp4,…

我们成功地发送了一个邮件!
如果你还想发送图片之类的附件,你还需要了解 MIME 文件。
是不是感觉很简单?搭配上脚本就能实现强大的功能!

排错

  • 421 Too many error commands

服务器嫌弃你了…错误太多…

  • 500 Error: bad syntax

命令不可识别,回去检查,说服务器能听懂的话!(实在解决不了,去搜一下试试?Windows可能会出现一些奇怪的问题)

  • 502 Error: command not implemented

同上…回退上一步试试?

  • 503 Error: send HELO/EHLO first

你不跟人打招呼,他会理你嘛…(选择模式,具体差别自己查~)

  • 535 Error: authentication failed

账号密码(令牌)错了,去看看你输入的是不是Base64编码后的字符串?别告诉我你把账号输错了(笑)

  • 550 Invalid User:...

你要找的这个邮箱不存在,核对一下邮箱?

  • 553 Mail from must equal authorized user

这里填写的要与你登录的邮箱相同(除非是别名)

  • Connection closed by foreign host.

失联了,可能是你上一步输入错误或者是太长时间无操作导致的?

如果还有其他问题,请先自行搜索,我是实在想不出来了(捂脸)


手工发送邮件-SMPT协议
http://www.elaina.me/smtp/
发布于
2022年7月25日
许可协议