使用TLS和普通身份验证将电子邮件发送到Gmail的SMTP服务器

时间:2011-07-27 06:54:46

标签: email ssl login smtp gmail

我有一个情况。我想连接到gmail smtp服务器并从我的Gmail帐户发送电子邮件。因为gmail smtp服务器使用PLAIN身份验证和TLS。我连接到gmail smtp服务器。和服务器响应如下。

  

220 mx.google.com ESMTP n21sm810716wed.43

然后我发送它“AUTH PLAIN”并发送“EHLO”命令。服务器响应如下:

503 5.5.1 EHLO/HELO first. n21sm810716wed.43

然后我再次发送“EHLO”命令,响应是:

  

250-mx.google.com为您服务,[203.99.179.10]

之后无论我给它什么。它打印一系列行和退出。它给出的响应顺序是;

  

250-SIZE 35882577

     

250-8BITMIME

     

250 STARTTLS

     

250 ENHANCEDSTATUSCODES

我该怎么做才能让我登录并向我发送电子邮件?任何帮助或建议将不胜感激。感谢

另见

  

Using SMTP, Gmail, and STARTTLS

3 个答案:

答案 0 :(得分:3)

您面临3个问题:

首先,您没有阅读EHLO命令的完整响应

此命令具有多行响应:

250-mx.google.com at your service, [203.99.179.10] 
250-SIZE 35882577 
250-8BITMIME 
250-STARTTLS 
250 ENHANCEDSTATUSCODES

请注意最后250个代码后的空格 - 这意味着这是最后一个响应行。

第二: EHLO应该是您发送的第一个命令。

第三: Gmail不允许在不使用SSL的情况下登录,无论是隐式(465端口)还是显式(STARTTLS命令)

答案 1 :(得分:1)

除非我们与服务器建立安全连接,否则我们无法使用STARTTLS。简单的SMTP库和telnet不支持STARTTLS。为此,我不得不使用GNUTLS与服务器进行握手并交换证书以建立安全连接。之后我发送STARTTLS,它运行正常。希望这有助于其他面临类似的问题。感谢

答案 2 :(得分:0)

您应该在给定的响应后发出STARTTLS命令。这是一个SMTP会话示例,通过端口587上netcat上的smtp.gmail.com获得:

220 mx.google.com ESMTP z83sm46627weq.20
EHLO localhost
250-mx.google.com at your service, [109.114.60.32]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250 ENHANCEDSTATUSCODES
STARTTLS
220 2.0.0 Ready to start TLS