我正尝试使用SMTP将邮件发送到某个服务器上的帐户(例如在Gmail上)。
到目前为止我已经尝试过:
220 mx.google.com ESMTP y14sm3079810ibf.45 HELO 250 mx.google.com at your service STARTTLS 220 2.0.0 Ready to start TLS AUTH LOGIN Connection closed by foreign host.
我做错了什么,我该如何解决它,所以我发送电子邮件,就好像我是我自己的服务器?
提交STARTTLS命令不会将连接置于TLS模式。 你必须正确地进行谈判和实施 。
Gmail需要TLS代表您中继邮件。 当您的桌面或移动电子邮件客户端从您的Gmail帐户发送邮件时,此类连接是必需的。
但是,任何普通的邮件服务器仍然会接受该服务器上的收件人的邮件,而不使用TLS或任何types的validation。 例如,您可以通过端口25连接到gmail-smtp-in.l.google.com并执行未encryption的SMTP会话。
假设您是[email protected],您已经login到您的邮件服务器mail.mydomain.com,并且您正在向[email protected]发送消息,如下所示:
dig yourdomain.com mx和注意结果(让我们说这是mail001.yourdomain.com) telnet mail001.yourdomain.com 25 HELO mail.mydomain.com MAIL FROM: [email protected] RCPT TO: [email protected] RCPT TO: [email protected] DATA From: "Mehrdad" <[email protected]> To: "Enrique Peñalosa" <[email protected]> Cc: "Gabriela Peñalosa" <[email protected]> Date: Fri, 30 Sep 2011 11:21:19 -0700 Subject: Thanks for all the fish! It was a wonderful picnic. I really enjoyed the salmon burgers. See you next week, Mehrdad .
注意事项:
要了解更多信息,请参阅Wikipedia文章 。
您向您的SMTP服务器发出了HELO命令。 这告诉它你想要使用原始的SMTP命令。 STARTTLS不是这些命令之一,因此您不应该能够使用STARTTLS 。
解决这个问题的第一步是从HELO命令切换到EHLO命令。 当你这样做的时候,你会看到SMTP服务器用它支持的一组SMTP扩展来响应。 希望STARTTLS能够上市。
这里是与GMail的SMTP服务器的对话:
CLIENT: EHLO me.example.com SERVER: 250-mx.google.com at your service SERVER: 250-SIZE 35882577 SERVER: 250-8BITMIME SERVER: 250-STARTTLS SERVER: 250 ENHANCEDSTATUSCODES CLIENT: STARTTLS SERVER: 220 2.0.0 Ready to start TLS <negotiation begins here...>