使用Win API通过gmail SMTP服务器发送邮件

我正在尝试使用gmail的SMTP服务器smtp.gmail.com在Windows中使用C发送邮件。我能够连接到服务器的端口587,但是服务器通过说需要STARTTLS / TLS来响应。是否有任何Windows API调用启动TLS连接? 我是否应该考虑在C中编写此应用程序或使用Python? 编辑:有没有人能够通过使用Telnet连接到smtp.gmail.com来发送邮件?我得到的是
220 mx.google.com ESMTP g4sm73428740wae.2
HELO hello
502 5.5.1 Unrecognized command. g4sm73428740wae.2
HELO hello.hello
250 mx.google.com at your service
MAIL FROM:a@gmail.com
530 5.7.0 Must issue a STARTTLS command first. g4sm73428740wae.2
STARTTLS
220 2.0.0 Ready to start TLS
MAIL FROM:a@gmail.com
并且连接丢失了     
已邀请:
您将需要围绕Microsoft的SmtpClient创建一个.NET包装器来创建一个DLL,该DLL可以通过SMTP使用.NET功能进行SSL / TLS支持,或者使用OpenSSL来处理连接。 用C ++编写它可能对你有好处。我不熟悉Python,但我确信有一些库,如TLS Lite(编辑:见下文,smtplib显然也提供了这个功能)。 编辑:根据您的编辑,您必须拥有一个知道如何处理STARTTLS命令的程序。默认情况下,GMail在所有SMTP连接上都需要安全连接和用户名/密码。您可以连接到端口25,但在初始连接后必须切换到安全端口。这就是为什么当您访问http://mail.google.com时,它会自动切换到https连接。不久前在互联网上对此进行了大量讨论。     
如果您不想使用OpenSSL或其他第三方SSL / TLS库,则可以使用Microsoft自己的SSPI / SChannel API。它可以在套接字的顶部使用,其中套接字处理字节的低级输入/输出,并且您将字节传入/传出SSPI / SChannel函数以进行处理。     
如果您选择在C中编写它,那么您将需要一个像GNU SASL这样的库,它可以实现安全的SMTP身份验证。如果您按照之前的建议选择C ++,那么我会看一下VMime,这是一个使用GSASL的免费C ++库。网站上有一个示例显示如何连接到GMail。     

要回复问题请先登录注册