2009-11-14 87 views
3

通过gmail(smtp.gmail.com)发送电子邮件的开放源代码库注:如果您没有时间阅读这漫长的旅程,则解决方案(使用源代码)位于:http://www.coastrd.com/smtps使用SMTPS(TLS)

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

要做到这一点使用谷歌的电子邮件服务是给了我一个问题,因为他们坚持使用端口465 SMTPS即SMTP与TLS加密:

http://en.wikipedia.org/wiki/Transport_Layer_Security#How_it_works

在研究的方式与C++等语言或基本风味做到这一点,我碰到:

http://forums.realsoftware.com/viewtopic.php?f=2&t=29542

http://forums.realsoftware.com/viewtopic.php?f=2&t=26959&p=162671#p162671

和Python的问题:

python smtp gmail authentication error (sending email through gmail smtp server)

如果我理解正确这一点,我将需要实现我的C++代码的TLS加密,完成所有手抖和谈判?

从C#问题:

sending email with gmail smtp (secure layer) in c++

本库没有做到这一点

http://johnwiggins.net/jwsmtp/

新增:

很多人只是安装的安全通道作为服务,然后配置它进行管理在SSL连接

http://www.stunnel.org/about/

Stunnel的是OpenSSL的包装。 OpenSSL有一些性能问题(http://josefsson.org/gnutls4win/

“在某些系统上初始化libgcrypt需要很长时间,但有报道称它可能需要大约10秒。”

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

然后THRE是一对情侣的商业产品:

http://www.chilkatsoft.com/downloads.asp

该产品主要以ActiveX(COM)“dll”(需要用户计算机上的安装程序'注册'dll - 另一个糟糕的.net想法)的形式交付。

安装程序加载“ChilkatMime.dll”1.33Mb,“ChilkatCert.dll”1.26MB,“ChilkatUtil.dll”720k。开发人员对合作真正的C .dll库并不感兴趣,该库可以从任何语言中调用,包括C/C++/BASIC/Python等。鉴于他们的态度我并不感到惊讶,他们一直是被黑客取得代码生成的受害者。

除了俗气的名字和作品,他们的产品价格合理,但一个我试过了,尽管在端口25连接被告知要使用端口465

相比之下,从催化剂的商品选项:

http://www.catalyst.com/products/sockettools/secure/library/index.html

现在作为主要插座工具产品的组件提供1/3的价格。这些工具是一流的!是的,你得到你所支付的。开发人员对此有所反应并愿意接受建议。他们提供DLL的所有口味,包括可以与你的产品,只有230K运一个独立的.dll文件!对于解决方案,他们赢得双手。

的SLL/TLS连接可以被显式地(只要握手开始SEESION)或隐含地(使用STARTTLS等握手之后)

笨是隐式的,例如(如在Python选项,ASP的,PHP等) http://codeigniter.com/forums/viewthread/84689/

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

"EHLO " + sLocalHost + CRLF 
    "MAIL FROM: " + sMailFrom + CRLF 
    "RCPT TO: " + "[email protected]" + CRLF 
    "DATA: Testing, Testing xyz" + CRLF 
    CRLF + "." + CRLF 
    "QUIT" 

与来自服务于通常的反应河

有些语言处理MIME通信为你(套筒工具,笨等),你只给在电子邮件主题,正文和地址使得它非常容易使用

CryptLib是促进一个开放源码的解决方案的SSL/TLS安全通道来只有1MB(全编译)一个C风格的.dll文件。由于源是可用的,就可以编译版本只用组件的dll,你需要将要来的比稍差。

http://www.cs.auckland.ac.nz/~pgut001/cryptlib/download.html

作者是即使我立即开展工作的图书馆,并询问有关MIME对话框非常敏感。有330页的手册!谢谢。

这个库不是MTA(邮件传输代理),所以你必须写上面的MIME对话,但它是免费的!可

源代码在这里: http://www.coastrd.com/smtps

+0

“开发商不是在一个真正的C .dll文件库,可以从包括C/C++/BASIC/Python的等等等等任何一种语言被称为合作毫无兴趣” - 所以他们没有做你想要的东西,可能因为他们没有看到它的商业案例,所以现在他们应该得到他们得到的一切? – 2013-04-23 15:52:40

回答

2

你是对的,你需要在你的应用程序中启用TLS。相反,你自己这样做的,我会建议寻找到OpenSSL

此外,你需要enable SMTP in your accountsupport SMTP authentication通过Gmail发送流量。

还有一个duplicate question有一些指针和C# implementation与代码,可能会帮助你。

There is also a library可能比滚动自己的更容易使用(虽然它目前不支持TLS)。

+0

ooooh谢谢你发现这个dupliacte。我将改变这个问题,使其更适合于C++和第三方库。 – 2009-11-15 00:18:38

+0

如果我正确读取该页面,john wiggins库不支持加密。 – 2009-11-15 06:35:59

+0

@Mike Trader:不,它还没有SSL/TLS支持。看着这个项目的论坛,它看起来像“即将到来”。希望它至少会给你一些处理SMTP-AUTH的指针。或者,你可以潜入并添加它......有一个社区会感谢你! – jheddings 2009-11-15 06:45:18

3

退房http://sourceforge.net/projects/libquickmail/。 此库可以将包含可选附件的邮件发送给多个收件人。 SMTP传输依赖于libcurl,所以它支持认证和TLS之类的东西。 C API非常简单易用。 在Linux(GCC)和Windows(MinGW)上进行测试,但应该在libcurl可用的任何平台上工作。