我的目标是向 gmail 地址发送电子邮件,例如[email protected]
通过 netcat 或 telnet 等命令行工具。
我尝试过:
我首先尝试了 netcat。
nc -C smtp.gmail.com 587
220 smtp.gmail.com ESMTP l35sm2846203wms.40 - gsmtp
EHLO smtp.gmail.com
250-smtp.gmail.com at your service, [101.50.65.95]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
MAIL FROM:[email protected]
530 5.7.0 Must issue a STARTTLS command first. l35sm2846203wms.40 - gsmtp
STARTTLS
220 2.0.0 Ready to start TLS
MAIL FROM:[email protected]
然后会话将自动关闭。在上面的代码片段中[email protected]
,我的真实 Gmail 电子邮件地址(当然改成了alpha
网上发帖)。当我在网上搜索这件事时,我发现每个人都在说netcat
或者telnet
无法使用,而是openssl s_client
将被使用。
然后我开始关注教程用来openssl s_client
执行此操作。尽管用户名和密码正确,并且我可以从 Web 浏览器登录,但还是发生了这种情况。
openssl s_client -connect smtp.gmail.com:465 -crlf
CONNECTED(00000003)
...
Start Time: 1630494318
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
Max Early Data: 0
---
read R BLOCK
220 smtp.gmail.com ESMTP z137sm5722297wmc.14 - gsmtp
ehlo smtp.gmail.com
250-smtp.gmail.com at your service, [101.50.65.95]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
auth login
334 VXNlcm5hbWU6 #########################################ASKING FOR BASE64 ENCODED USERNAME. I ENTER MY REAL (BASE64 ENCODED) GMAIL EMAIL ADDRESS [email protected] HERE.
******************************
334 UGFzc3dvcmQ6 #########################################ASKING FOR BASE64 ENCODED PASSWORD. I ENTER (BASE64 ENCODED) PASSWORD OF MY GMAIL EMAIL GIVEN ABOVE.
*****************
535-5.7.8 Username and Password not accepted. Learn more at
535 5.7.8 https://support.google.com/mail/?p=BadCredentials z137sm5722297wmc.14 - gsmtp
问题: 为什么会发生这种情况?我该如何解决?
答案1
尝试
openssl s_client -ign_eof -connect smtp.gmail.com:465 -crlf
命令-ign_eof
行参数很有帮助。