我正在编写一个通过有效的GMail用户ID和密码发送邮件的应用程序。
我只是想在我的Windows XP命令行上模拟SMTP连接,当我在465端口telnet smtp.gmail.com
时 - 我看不到任何东西。标题为Telnet smtp.gmail.com
的空白命令窗口随光标打开。当我输入EHLO
或通常的SMTP握手命令时,提示就会关闭。
我无法弄清楚什么是错的,在哪里。我尝试连接到587,它根本没有连接到telnet。任何人都可以澄清我是否做错了什么?
答案 0 :(得分:48)
使用Linux或OSx,执行索林推荐但使用端口465。 25是通用SMTP端口,但不是GMail使用的端口。另外,我不相信你想使用-starttls smtp
openssl s_client -connect smtp.gmail.com:465
您应该获得有关SSL会话和响应的大量信息:
220 mx.google.com ...
输入
HELO smtp.gmail.com
你会收到:
250 mx.google.com at your service
从那里开始,它不像发送SMTP邮件那么简单,因为Gmail有适当的保护措施,以确保您只发送看似来自实际属于您的帐户的电子邮件。不要输入“Helo”,而是使用“Ehlo”。我对SMTP知之甚少,所以我无法解释其中的差异,也没有时间去研究。也许有更多知识的人可以解释。
然后,输入“auth login”,您将收到以下内容:
334 VXNlcm5hbWU6
这基本上是在Base 64中编码的“用户名”一词。使用Base {64}编码器,如this one,编码您的用户名并输入它。对您的密码执行相同操作,然后请求密码。你应该看到:
235 2.7.0 Accepted
就是这样,你已经登录了。
如果您使用的是OSx或Linux终端,还有一个问题需要克服。只需按“ENTER”键,就不会导致SMTP需要结束消息的CRLF。你必须使用“CTRL + V + ENTER”。所以,这应该如下所示:
^M
.^M
250 2.0.0 OK
答案 1 :(得分:7)
对于OSX'终端:
openssl s_client -connect smtp.gmail.com:25 -starttls smtp
答案 2 :(得分:5)
Gmail要求与其服务器进行SMTP通信以进行加密。虽然您在端口465上打开了与Gmail服务器的连接,但遗憾的是,由于Gmail要求您对连接使用STARTTLS / SSL加密,因此无法以纯文本与其进行通信。
答案 3 :(得分:4)
Jadaaih,您可以通过CURL连接发送SMTP - link to Curl Developer Community。
答案 4 :(得分:3)
从终端开始会话:
openssl s_client -connect smtp.gmail.com:25 -starttls smtp
响应的最后一行应为“250 SMTPUTF8”
启动登录
auth login
这应返回“334 VXNlcm5hbWU6”。
输入用户名
以base64编码键入您的用户名(例如echo -n 'your-username' | base64
)
这应该返回“334 UGFzc3dvcmQ6”
输入密码
以base64编码键入密码(例如echo -n 'your-password' | base64
)
<强>成功强>
您应该会看到“235 2.7.0已接受”并且您已成功登录
答案 5 :(得分:2)
查看lifehacker中的这篇文章:Geek to Live: Back up Gmail with fetchmail。它使用命令行程序。检查并查看是否有帮助。 BTW为什么在有许多其他不错的选择时使用命令行?
答案 6 :(得分:2)
试试这个:
telnet smtp.gmail.com 587
答案 7 :(得分:2)
tcp / 465最初用于首先建立SSL(和更新的TLS)层,内部用于明文或普通旧协议(此处为smtp)
当垃圾邮件发送者和群发邮件攻击像十年或更久以前开始时,tcp / 587最初是作为默认tcp / 25端口的替代品,而且在那些臭名昭着的AOL时代,当一些有趣的ISP在默认端口上有一些块时出境(例如那个tcp / 25)拒绝他们自己的客户(AOL)批量发送电子邮件/垃圾邮件,但AOL-需要使用其他邮件帐户和邮件提供商的客户仍然需要从AOL发送邮件-internet连接,所以他们仍然可以连接到tcp / 587并在那时做简单的smtp。处理STARTTLS做smtp的方法是使用两个众所周知的原始纯文本tcp / 25和tcp / 587端口,并且只有当初始明文连接成功时,才能启动TLS层(因此,STARTTLS)从那时开始,从那一点开始有一个安全的连接。
至于调试这些东西可能是通过命令行工具,例如对于Windows,有历史blat命令行邮件程序(smtp),直到今天不能做TLS(STARTTLS)所以它只能使用plain-文本smtp发送邮件。
然后有许多项目免费软件和开源软件具有更多功能和特性,例如
smtp客户端:mailsend @ googlecode http://code.google.com/p/mailsend/
smtp客户端:msmtp @ sourceforge(与mpop相关) http://msmtp.sourceforge.net/
pop3客户端:mpop @ sourceforge http://mpop.sourceforge.net/
答案 8 :(得分:1)
这是用于连接的命令
smtp.gmail.com
587
echo -n '{{user_name}}' | base64
echo -n '{{user_password}}' | base64
openssl s_client -connect {{server_name}}:{{server_port}} -crlf -quiet -starttls smtp
以及接受邮件发送步骤
auth login
{{user_name__hash}}
{{user_password__hash}}
helo {{server_name}}
mail from: <{{message_from}}>
rcpt to: <{{message_to}}>
DATA
from: <{{message_from}}>
to: <{{message_to}}>
subject:{{message_subject}}
Content-Type: text/html; charset='UTF-8'; Content-Transfer-Encoding: base64;
MIME-Version: 1.0
{{message_content}}
.
quit
答案 9 :(得分:0)
gmail使用加密连接。因此,即使您建立了连接,您也无法发送任何电子邮件。加密有点复杂,无法管理。请尝试使用openssl。
下面的帖子应该有帮助 -