2009-10-04 168 views
34

我正在编写通过有效的GMail用户标识和密码发送邮件的应用程序。通过命令行连接到smtp.gmail.com

我只是想模拟我的Windows XP命令行上的SMTP连接,以及当我在465端口telnet smtp.gmail.com - 我没有看到任何东西。用光标打开标题为Telnet smtp.gmail.com的空白命令窗口。当我输入EHLO或通常的SMTP握手命令时,提示会关闭。

我无法弄清楚什么是错误的,哪里。我试图连接到587,它根本不连接在telnet上。任何人都可以澄清,如果我做错了什么?

+0

参见:http://stackoverflow.com/a/36296872/59087 – 2016-04-07 20:21:13

回答

4

Gmail需要与其服务器的SMTP通信进行加密。尽管您在端口465上打开了与Gmail服务器的连接,但不幸的是,您无法以明文形式与Gmail进行通信,因为Gmail要求您使用STARTTLS/SSL加密进行连接。

+1

所以有没有办法,我可以从命令行办呢? – Abhishek 2009-10-04 16:18:04

2

查看lifehacker的帖子:Geek to Live: Back up Gmail with fetchmail。它使用命令行程序。检查并看看是否有帮助。顺便说一句,为什么你有很多其他不错的选择时使用命令行?

+1

嘿Shoban,我只是想找到或写一个动作脚本,发送邮件在我的flex应用程序中使用它 – Abhishek 2009-10-05 04:07:15

5

试试这个:

telnet smtp.gmail.com 587 
+7

然后呢?你是做什么? – trusktr 2013-04-26 07:23:28

+9

在问题中提到587端口无法正常工作,并且他已经尝试了您在此处提供的内容。你在这个线程中没有任何价值。 – 2015-04-27 15:04:32

+1

Downvoted因为没有帮助而且没​​有解释之后要做什么。 – Archibald 2016-04-05 15:44:02

7

对于OSX”终端:

openssl s_client -connect smtp.gmail.com:25 -starttls smtp 
42

使用Linux或OSX,做什么索林建议,但使用端口465来代替。 25是通用的SMTP端口,但不是GMail使用的端口。另外,我不相信你想使用-starttls SMTP

openssl s_client -connect smtp.gmail.com:465 

你应该得到许多信息上的SSL会话和响应:在HELO

220 mx.google.com ... 

类型,你会收到:

250 mx.google.com at your service 

从那里,它并不像刚刚发送SMTP邮件因为Gmail有保护措施,以确保你只发送邮件看起来像是来自帐户实际上贝隆一样简单g给你。不要输入“Helo”,请使用“Ehlo”。我对SMTP不太了解,所以我无法解释它们之间的差异,也没有时间去研究太多。也许有更多知识的人可以解释。

然后,键入“身份验证登录”,您将获得以下信息:

334 VXNlcm5hbWU6 

这主要是使用基64的编码器,如this one在基地64编码单词“用户名”,编码您的用户名称并输入。请为您的密码做同样的事情,请在下面提出要求。您应该看到:

235 2.7.0 Accepted 

就是这样,您已登录。

如果您使用OSx或Linux终端,还有一点需要克服。只需按下“ENTER”键,显然不会导致SMTP需要结束消息的CRLF。你必须使用“CTRL + V + ENTER”。所以,这看起来应该像下面这样:

^M 
.^M 
250 2.0.0 OK 
+3

至少对于osx,您可以将“-crlf”添加到最初的“openssl”连接,以使其与RETURNS很好地配合使用。例如openssl s_client -connect smtp.gmail。com:465 -crlf – 2013-06-25 15:47:14

+2

自你发布这个版本差不多两年了,但这确实是一个很好的答案。谢谢! – Greg0ry 2014-10-22 13:14:22

+1

仍然像一个魅力。如果只有愚蠢的Gmail没有要求我从我的服务器使用我的Web浏览器登录,而我的服务器只有一个控制台; /。 – Reinmar 2015-03-01 12:19:00

2

TCP/465最初的目的是用于建立SSL(和较新的TLS)层中的第一,和里面做明文或纯老协议(SMTP这里)

tcp/587最初是在垃圾邮件发送者和群发邮件攻击像十年前或更早的时候开始时,替代默认的tcp/25端口,而且在那些臭名昭着的AOL时代,当一些有趣的ISP在默认端口出站时有一些阻塞因为那时tcp/25)否认自己的客户(AOL)大量发送电子邮件/垃圾邮件,但美国在线 - 需要使用其他邮件帐户和邮件提供商的客户仍然需要从AOL-internet连接器发送邮件所以他们仍然可以连接到tcp/587,然后在它上面做简单的smtp。

与使用smtp的STARTTLS方式的处理方式是使用两个众所周知的纯文本tcp/25和tcp/587端口,并且只有当初始明文连接成功后才能启动TLS层(从而STARTTLS)从那里开始,从那个点起具有安全连接。

至于调试这些东西可能通过命令行工具,例如Windows有历史的命令行邮件程序(smtp),直到今天不能做TLS(STARTTLS),所以它只能使用普通文本smtp发送它的邮件。

http://www.blat.net/

然后有许多项目具有更多的功能和特点的免费软件和开源软件,如

SMTP客户端:mailsend @ googlecode上 http://code.google.com/p/mailsend/

SMTP客户端:msmtp在@ sourceforge上(涉及到下面的mpop) http://msmtp.sourceforge.net/

pop3客户端:mpop @ sourceforge http://mpop.sourceforge.net/