我有一个情况。我想连接到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
我该怎么做才能让我登录并向我发送电子邮件?任何帮助或建议将不胜感激。感谢
答案 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