命令行发送SMTP协议邮件(163邮箱)

在日常工作和学习中,我们时常需要使用电子邮件进行信息交流和文件传输。其中发送邮件的方式有多种,其中最常见的是登录邮箱网页发送,使用第三方邮件客户端(如Outlook、Thunderbird等)发送,以及利用命令行发送SMTP协议邮件。

本文将详细介绍如何使用命令行发送SMTP协议邮件,并以163邮箱为例进行讲解。同时还会提供一些常见的错误和解决方法,以供参考。

一、准备工作

在发送邮件之前,我们需要先了解SMTP协议,并准备好相关的信息,包括发件人邮箱、SMTP服务器地址、SMTP服务器端口、SMTP服务器用户名和密码等。以下是163邮箱SMTP服务器相关信息:

SMTP服务器地址:smtp.163.com

SMTP服务器端口:25

SMTP服务器用户名:发件人的163邮箱帐号(例如:abc@163.com)

SMTP服务器密码:发件人的163邮箱密码

当然,如果使用的是其他邮件服务商,其SMTP服务器地址、端口、用户名和密码可能会有所不同,需要根据实际情况进行更改。

此外,我们还需要一些命令行工具,其中最常用的是telnet(用于通过命令行与远程主机进行通信)和openssl(用于加密和验证网络传输数据)。在Windows系统中,我们可以直接使用命令行工具,而在MacOS和Linux系统中,我们需要先安装相应的软件包。

二、使用命令行发送邮件

1. 在Windows系统中使用telnet发送邮件

步骤一:打开命令提示符

在开始菜单中搜索“cmd”并打开命令提示符,或者直接按下Win+R键,在运行框中输入“cmd”并按下回车键。

步骤二:打开telnet

在命令提示符中输入“telnet smtp.163.com 25”,并按下回车键。

步骤三:输入命令

在telnet界面中输入以下命令(注意把红色部分替换为实际参数):

```

HELO 163.com

auth login

(输入授权帐号,即发件人邮箱,Base64编码)

(输入授权密码,即发件人邮箱密码,Base64编码)

mail from:<发件人邮箱>

rcpt to:<收件人邮箱>

data

Subject:邮件主题

Content-Type:text/plain;charset=utf-8

(邮件内容)

.

quit

```

其中,HELO命令用于向服务器问候,auth login命令用于进行SMTP认证,mail from表示发件人邮箱,rcpt to表示收件人邮箱,data进入邮件内容输入模式,Subject表示邮件主题,Content-Type表示邮件内容的格式(这里为纯文本格式),最后的“.”表示结束邮件内容输入,quit命令用于退出telnet会话。

举例说明:

```

> telnet smtp.163.com 25

220 163.com Anti-spam GT for Coremail System (163com[20141201])

EHLO 163.com

250-mail

250-PIPELINING

250-AUTH LOGIN PLAIN

250-AUTH=LOGIN

250-coremail 1Uxr2xKj7kG0xkI17xGrUDI0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrEUUUU

250-STARTTLS

250 8BITMIME

auth login

334 dXNlcm5hbWU6

YWJjMTIzQDE2My5jb20=

334 UGFzc3dvcmQ6

MTIzNDU2Nzg=

mail from:

250 Mail OK

rcpt to:<123@qq.com>

250 Mail OK

data

354 End data with .

Subject:邮件主题

Content-Type:text/plain;charset=utf-8

这是测试邮件。

谢谢!

.

250 Mail OK queued as smtp20,MrCowACgBjKanMdMvtgbyg--.13733S2 1631400291

quit

221 Bye

Connection to host lost.

```

步骤四:查看邮件

发送成功后,我们需要登录收件人邮箱进行查看,此时应该能够接收到来自发件人的测试邮件。

2. 在MacOS或Linux系统中使用openssl发送邮件

步骤一:打开终端

在Launchpad或应用程序中找到终端并打开。

步骤二:打开openssl

在终端中输入以下命令:

```

openssl s_client -connect smtp.163.com:25 -starttls smtp

```

其中,s_client命令用于连接到SMTP服务器进行通信,-connect选项用于指定连接地址和端口号,-starttls选项表示使用TLS协议。

步骤三:输入命令

连接到SMTP服务器后,在命令提示符后输入以下命令(注意把红色部分替换为实际参数):

```

EHLO 163.com

auth login

(输入授权帐号,即发件人邮箱,Base64编码)

(输入授权密码,即发件人邮箱密码,Base64编码)

mail from:<发件人邮箱>

rcpt to:<收件人邮箱>

data

Subject:邮件主题

Content-Type:text/plain;charset=utf-8

(邮件内容)

.

quit

```

与Windows系统中使用telnet发送邮件的步骤类似,不同之处在于输入命令的方式不同。

举例说明:

```

> openssl s_client -connect smtp.163.com:25 -starttls smtp

CONNECTED(00000003)

depth=0 CN = *.163.com,OU = Free SSL,O = CaiXin,ST = Beijing,C = CN,postalCode = 100029,street = 6 Xibeiwang East Road,L = Haidian District

verify error:num=18:self signed certificate

verify return:1

depth=0 CN = *.163.com,OU = Free SSL,O = CaiXin,ST = Beijing,C = CN,postalCode = 100029,street = 6 Xibeiwang East Road,L = Haidian District

verify return:1

---

Certificate chain

0 s:CN = *.163.com,OU = Free SSL,O = CaiXin,ST = Beijing,C = CN,postalCode = 100029,street = 6 Xibeiwang East Road,L = Haidian District

i:CN = *.163.com,OU = Free SSL,O = CaiXin,ST = Beijing,C = CN,postalCode = 100029,street = 6 Xibeiwang East Road,L = Haidian District

---

Server certificate

-----BEGIN CERTIFICATE-----

MIID+zCCAuegAwIBAgIJAJOVn2nLomhZMA0GCSqGSIb3DQEBCwUAMIGVMTAwMwYD

VQQDDCxqLm5ldHdvcmtzaG9wLmNvbS9jYTJiNWNmNC04NWRkLTExZTktODNjNi05

NjE1YWQxZGQ2ZTAwHhcNMjQwMjA4MTI1OTE5WhcNMjkwMjA4MTIxMTIxWjCBlTEx

MDAwBgNVBAMTLWhhLm5ldHdvcmtzaG9wLmNvbTCCASIwDQYJKoZIhvcNAQEBBQAD

ggEPADCCAQoCggEBAKvFOrLdNghOvjg1nwRxO/mJ/2QSm6U+X9UyOtbU1CK6eJDI

wIhr0L7sWJ0sWhs7FLmGPlX+MUQmJzT3qFmGZwYBUZn2nWACBO3Mf4pBtJXyV7xW

AmvzS7a10Y5In5J7pA8cIt5Va5e5SFTEgJIVfzG8/OvK/y2bYrvuQ+bQZ8gdKj4q

3tuhkBpV+nCm0RohWV7lS0/XoNgJ/InKe1VBpOfojJUrpiN0mdHSEyOibOyBQJjK

KFDFdJbHjzlukfpkc2AkDcoUzoen6jE9Jcunlw65RGbIbvKMjJpLpwjKcRgIz71s

mieTjfb2GHwh9/tGAKqhF+q3PIw/bEiFm0RcWUsCAwEAAaOBwjCBvzAJBgNVHRME

AjAAMAsGA1UdDwQEAwIHgDALBgNVHQ8EBAMCAYYwDQYJKoZIhvcNAQELBQADggEB

ALE8lW5KvcnjynbFayEIPyzXHZfWggRTzKjZNbAOdf7Q2ej03JhK4V3qtdtLp7Vn

K8Wx7iFUvJFhvZwY1YuIvWhs+SUmAmRkeK9yTQfHIq3rIHz8AV+DpuZpaKwZEHzz

2hs47bIkmznUyXHJ6eyF+anCfU26x7Z52OZHPr0m5OR5xpGl8KjEvyNYX0RKfska

zQetKnKxg7NQ2fayNycYo3G4z8aF7V9XBRt1f7piPAvz8WSoV7RNZwYd81jmev4c

WHpqVbXy+I/cuJ7vzw8lRzGW+ZJMoy5n5n5M5pMFjKcbMe/Q9jq5e/dyx7z2yyjJ

LoZC1jYJaJUgI+SGfa+w6Ug=

-----END CERTIFICATE-----

subject=CN = *.163.com,OU = Free SSL,O = CaiXin,ST = Beijing,C = CN,postalCode = 100029,street = 6 Xibeiwang East Road,L = Haidian District

issuer=CN = *.163.com,OU = Free SSL,O = CaiXin,ST = Beijing,C = CN,postalCode = 100029,street = 6 Xibeiwang East Road,L = Haidian District

---

No client certificate CA names sent

---

SSL handshake has read 1513 bytes and written 513 bytes

Verification error: self signed certificate

---

New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA

Server public key is 1024 bit

Secure Renegotiation IS supported

Compression: NONE

Expansion: NONE

SSL-Session:

Protocol : TLSv1

Cipher : DHE-RSA-AES256-SHA

Session-ID: 0955883194C3EC4F4B9EF7E1B40B33D7B47A7808FD730532F171E27C00C43D62

Session-ID-ctx:

Master-Key: 6503AC3B60EAFB0B1DDE98BAAF0EE0D2358428AF59AAEAFB6DFA7816C6920F964FCB3E9A1A3EDABAE49165902212A80A

Key-Arg : None

Start Time: 1613377341

Timeout : 300 (sec)

Verify return code: 18 (self signed certificate)

---

250-mail

250-PIPELINING

250-AUTH LOGIN PLAIN

250-AUTH=LOGIN

250-coremail 1Uxr2xKj7kG0xkI17xGrUDI0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UrEUUUU

250-STARTTLS

250 8BITMIME

auth login

334 dXNlcm5hbWU6

YWJjMTIzQDE2My5jb20=

334 UGFzc3dvcmQ6

MTIzNDU2Nzg=

mail from:

250 Mail OK

rcpt to:<123@qq.com>

250 Mail OK

data

354 End data with .

Subject:邮件主题

Content-Type:text/plain;charset=utf-8

这是测试邮件。

谢谢!

.

250 Mail OK queued as smtp61,MrCowAAkNTmaaaAKEM6KOw--.17790S2 1631800683

quit

221 Bye Bye

closed

```

步骤四:查看邮件

同样需要登录收件人邮箱进行查看,可以在收件箱中找到测试邮件。

三、常见问题解决方法

1. 报错“535 Error: authentication failed”

这个错误表示SMTP服务器拒绝了认证信息。解决方法一般有两个,一是检查账号和密码是否正确,二是检查是否需要开启SMTP服务(在163邮箱中是需要手动开启的)。

2. 报错“421 Login timeout exceeded”

这个错误表示登录超时,可能是因为网络问题导致连接超时。解决方法可以尝试重新连接SMTP服务器,并检查网络是否正常。

3. 报错“552 5.7.0 SPAM Content Found”

这个错误表示邮件被认为是垃圾邮件。解决方法包括检查邮件内容是否合规、附件是否包含病毒等。

4. 报错“554 DT:SPM”

这个错误表示邮件发送失败,可能是因为批量发送、内容不符合规定等原因。解决方法可以尝试重新发送邮件,并注意遵守发送规定。

总结:

本文详细介绍了如何使用命令行发送SMTP协议邮件,包括Windows系统中使用telnet命令和MacOS或Linux系统中使用openssl命令。同时还提供了常见问题的解决方法,希望能够为读者在日常工作和学习中发送邮件提供帮助和参考。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(33) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部