使用 TLS 和普通身份验证将电子邮件发送到 Gmail 的 SMTP 服务器
我有一个情况。我想连接到 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。 n21sm810716星期三.43
然后我再次向它发送“EHLO”命令,响应是:
250-mx.google.com 竭诚为您服务,[203.99.179.10]
在此之后我给它任何东西。它打印一系列行和退出。它给出的响应顺序是:
250-尺寸 35882577
250-8BITMIME
250-STARTTLS
250 个增强状态代码
我应该给它什么才能让我登录并向我发送电子邮件?任何帮助或建议将不胜感激。谢谢
另请参阅
I have a situation. I want to connect to gmail smtp server and send Email from my gmail account. as gmail smtp server uses PLAIN authentication and TLS. I connect to gmail smtp server. and server response is as follow.
220 mx.google.com ESMTP n21sm810716wed.43
then I send it "AUTH PLAIN" and send "EHLO" command. The server responses are as follow:
503 5.5.1 EHLO/HELO first. n21sm810716wed.43
I then sent it "EHLO" command again and response is:
250-mx.google.com at your service, [203.99.179.10]
after this whatever I give it. It prints a sequence of line and Exit. The sequence of responses which it gives are;
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250 ENHANCEDSTATUSCODES
what should I give it so that it let me login and send me Email? Any help or suggestion will be appreciated. Thanks
See also
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您面临 3 个问题:
首先,您没有阅读 EHLO 命令的完整响应。
此命令具有多行响应:
请注意最后 250 代码后面的空格 - 这意味着这是最后一个响应行。
第二:
EHLO 应该是您发送的第一个命令。
第三:
Gmail 不允许在不使用 SSL 的情况下登录,无论是隐式(在 465 端口上)还是显式(STARTTLS 命令)
You are facing 3 problems:
First, you are not reading entire response of EHLO command.
This command has multi-line response:
Note the space after last 250 code - it means that this is the last response line.
Second:
EHLO should be the first command you send.
Third:
Gmail does not allow to log-in without using SSL, either implicit (on 465 port) or explicit (STARTTLS command)
除非我们与服务器有安全连接,否则我们无法使用 STARTTLS。简单的 SMTP 库和 telnet 不支持 STARTTLS。为此,我必须使用 GNUTLS,它与服务器执行握手并交换证书以建立安全连接。之后我发送 STARTTLS 并且工作正常。希望这可以帮助其他面临类似问题的人。谢谢
We can not use STARTTLS unless we have a secure connection with the server. simple SMTP library and telnet do not support STARTTLS. For this I had to use GNUTLS which performs handshaking with the server and exchange certificate to establish a secure connection. After that I send STARTTLS and it works fine. Hope this helps other facing similar problem. Thanks
您应该在给定响应后发出 STARTTLS 命令。以下是一个 SMTP 对话示例,是通过端口 587 上的
smtp.gmail.com
上的netcat
获得的:You should issue the STARTTLS command after the given response. Here is an SMTP conversation example, obtained with
netcat
onsmtp.gmail.com
on port 587: