C++ 使用SMTPS(TLS)通过gmail(smtp.gmail.com)发送电子邮件的开源库

C++ 使用SMTPS(TLS)通过gmail(smtp.gmail.com)发送电子邮件的开源库,c++,ssl,smtpclient,C++,Ssl,Smtpclient,注意:如果您没有时间阅读这段漫长的旅程,解决方案(带有源代码)如下: 很长一段时间以来,通过远程邮件服务器(通常在网站托管公司)发送SMTP(端口25)电子邮件很容易使用应用程序。打开TCP端口25,发送“HELO…”等 使用谷歌电子邮件服务进行此操作给我带来了一个问题,因为他们坚持使用端口465 SMTPS ie SMTP和TLS加密: 在研究用C++语言或基本的语言来完成这一点的方法时,我遇到了: 还有一个Python问题: 如果我正确地理解了这个问题,我需要在我的C++代码中实现T

注意:如果您没有时间阅读这段漫长的旅程,解决方案(带有源代码)如下:

很长一段时间以来,通过远程邮件服务器(通常在网站托管公司)发送SMTP(端口25)电子邮件很容易使用应用程序。打开TCP端口25,发送“HELO…”等

使用谷歌电子邮件服务进行此操作给我带来了一个问题,因为他们坚持使用端口465 SMTPS ie SMTP和TLS加密:

在研究用C++语言或基本的语言来完成这一点的方法时,我遇到了:

还有一个Python问题:

<>如果我正确地理解了这个问题,我需要在我的C++代码中实现TLS加密,完成所有的握手和协商。 从C#问题中:

这个图书馆不这样做

添加:

很多人只是将stunnel作为服务安装,然后配置它来管理SSL连接

Stunnel是一个OpenSSL包装器。OpenSSL存在一些性能问题()

“在某些系统上初始化libgcrypt需要很长时间,有报告称可能需要10秒左右。”

并要求:“libeay32.dll”1.35MB+“libssl32.dll”310k+“zlib1.dll”75k

然后是一些商业产品:

此产品主要以Activex(COM)“dll”的形式提供(要求用户计算机上的安装程序“注册”dll-另一个糟糕的.net想法)


安装程序加载“ChilkatMime.dll”1.33Mb,“ChilkatCert.dll”1.26MB,“ChilkatUtil.dll”720k。开发人员根本没有兴趣合作开发一个真正的C.dll库,该库可以从任何语言(包括C/C++/BASIC/Python等)调用。考虑到他们的态度,我并不奇怪他们成为黑客代码生成器的受害者

除了俗气的名字和艺术品,他们的产品价格合理,但我试过的那个,尽管被告知使用端口465,还是连接到端口25

相比之下,catalyst的商业选项:

现在可作为主要插座工具产品的组件,价格为1/3。这些工具是一流的!是的,你买什么就买什么。开发人员对建议反应积极,乐于接受。他们提供所有风格的dll,包括一个独立的.dll,可以随您的产品,只有230k!对于商业解决方案,他们轻而易举地赢得了胜利

SLL/TLS连接可以显式(在握手开始时)或隐式(在使用STARTTLS等进行握手后)建立

例如,CodeIgniter是隐式的(Python、asp、php等中的选项也是隐式的)

一旦建立了连接,就存在一个“隧道”,MIME会话可以通过该隧道继续进行:

  "EHLO " + sLocalHost + CRLF
  "MAIL FROM: " + sMailFrom + CRLF
  "RCPT TO: " + "me@mydomain.com" + CRLF  
  "DATA: Testing, Testing xyz" + CRLF 
  CRLF + "." + CRLF
  "QUIT" 
使用来自服务器的常规响应

有些语言为您处理MIME通信(套接字工具、codeigniter等),您只需输入电子邮件主题、正文和地址,就可以轻松使用

CryptLib是一个开源解决方案,它可以在1MB(完全编译)的内存中使用C样式的.dll来简化SSL/TLS隧道。因为源代码是可用的,所以可以编译一个版本的dll,其中只包含您需要的组件,这些组件的数量应该比这个少一些

尽管我立即让图书馆工作,并询问有关MIME对话的问题,但作者的反应非常积极。有330页的手册!多谢各位

此库不是MTA(邮件传输代理),因此您必须编写上面的MIME对话,但它是免费的

此处提供的源代码:
.

您需要在应用程序中启用TLS,这是正确的。与其自己做这件事,我建议你调查一下

此外,您需要通过Gmail发送流量

还有一个具有一些指针和代码的,可能能够帮助您的

这可能比您自己的滚动更容易使用(尽管它目前没有TLS支持)。

请查看。 此库可以向多个收件人发送带有可选附件的邮件。 SMTP传输依赖于libcurl,因此它支持身份验证和TLS等功能。 C API的使用非常简单。
在Linux(GCC)和Windows(MinGW)上测试过,但应该可以在任何可以使用libcurl的平台上工作。

ooh感谢您找到dupliacte。我将改变这个问题,使它更适合C++和第三方图书馆。如果我正确地阅读该页,john wiggins图书馆不支持加密。@麦克商人:不,它还没有SSL/TLS支持。查看该项目的论坛,它看起来像是“它来了”。希望它至少能为您提供一些处理SMTP-AUTH的指针。或者,你可以深入研究并添加它。。。有一个社区会为此感谢你!“开发人员根本没有兴趣在一个真正的C.dll库上进行合作,这个库可以从任何语言调用,包括C/C++/BASIC/Python等”-所以他们没有做你想做的事情,可能是因为他们没有看到它的商业案例,所以现在他们应该得到他们得到的一切?