使用Win API通过Gmail邮件服务器发送邮件
我想使用Gmail的SMTP服务器smtp.gmail.com在Windows中使用C发送邮件。我能够连接到服务器的端口587,但是服务器回应说需要STARTTLS/TLS。是否有任何Windows API调用来启动TLS连接?使用Win API通过Gmail邮件服务器发送邮件
我应该甚至考虑用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:[email protected]
530 5.7.0 Must issue a STARTTLS command first. g4sm73428740wae.2
STARTTLS
220 2.0.0 Ready to start TLS
MAIL FROM:[email protected]
和连接丢失
你将需要或者围绕微软的SmtpClient一个.NET包装,以创建可通过使用.NET功能的SSL/TLS支持DLL SMTP或使用OpenSSL来处理连接。
这对你来说可能是有益的,用C++编写。我对Python并不熟悉,但我确信有如TLS Lite这样的库(编辑:见下文,smtplib显然也为您提供这个功能)。
编辑:根据你的编辑,你必须有一个知道如何处理STARTTLS命令的程序。默认情况下,GMail在所有SMTP连接上都需要安全连接和用户名/密码。您可以连接到端口25,但在初始连接后您必须切换到安全端口。这就是为什么当你去http://mail.google.com时,它会自动切换到https连接。前段时间有人在互联网上对此进行了大讨论。
如果您不想使用OpenSSL或其他第三方SSL/TLS库,则可以使用Microsoft自己的SSPI/SChannel API。它可以在套接字上使用,套接字处理字节的低级输入/输出,并将字节传入/传出SSPI/SChannel函数进行处理。
感谢提到SSPI SChannel。我发现这个示例代码 - > http://www.coastrd.com/c-schannel-smtp – Stormshadow 2010-07-21 09:00:12
Pythons smtplib支持TLS开箱即用; http://docs.python.org/library/smtplib.html – 2010-07-20 10:00:11
是的Python中的smtplib工作得很好,但我发现我必须用C写这段代码,除非有一些方法可以用Python编写邮件功能,从我的C代码中调用它。 – Stormshadow 2010-07-21 09:02:30