2

好吧,所以这绝对是要了我的命......如果有人能帮助我,我会是地球上最幸福的人......

所以,我需要为学校的一个项目创建一个 C++ 电子邮件客户端,并且我一直在使用 POCO 开源 C++ 库,并且我可以很好地使用不需要 SSL 身份验证的电子邮件服务器,但是任何需要确实需要 SSL,我没有运气...

这是 POCO 的文档:http: //pocoproject.org/docs/

当你去那里时,你必须点击 POCO:Net,然后在左下角的框架中,有一堆不同 NET 对象的文档……我一直特别使用 POP3ClientSession。

我已经安装了 OpenSSL 并编译了支持 SSL 的库,但似乎没有任何效果......我也遵循了本教程: http: //pocoproject.org/wiki/index.php/NetSSL

如果有人有 POCO 的经验,或者在 SSL/C++ 上只有 1337,如果你能帮助我完成这项工作,我将非常感激!在过去的 12 个小时里,我一直在努力解决这个问题,只是为了让 SSL 正常工作,并且运气为 0。

好吧,我什至不太确定的一件事是我是否使用 SSL 正确编译了它……我在我的机器上安装了 OpenSSH,然后重新编译了所有内容(花了一个小时!!!)。我似乎已经编译了所有内容,但是当我将它与以下包含语句一起使用时:

#include "Poco/Net/SecureStreamSocket.h" 

这是文档告诉我要做的,我得到了一个错误......他们在一个名为 NetSSL_OpenSSL 的文件夹中编译,所以我把标题和源代码复制到 Net 文件夹中的适当位置,希望它能够工作。之后我得到另一个错误:

fatal error C1083: Cannot open include file: 'Poco/Crypto/X509Certificate.h': No such file or directory I dont see Crypto anywhere... 

但是我确实有 X509Certificate.h 文件...我什至将源中的 Crypto 更改为 Net(因为它现在保存此文件的 net 文件夹),但正如我所料,这在我面前爆炸了...

所以,我想主要问题如下:

如何使用带有 SSL 套接字的 POP3 而不是 POP3ClientSession 使用的标准套接字发送电子邮件?

4

2 回答 2

1

正如错误所述

致命错误 C1083:无法打开包含文件:“Poco/Crypto/X509Certificate.h”

这意味着它找不到文件,这是唯一的问题!!!

于 2011-09-12T13:31:55.333 回答
1

对于新手来说,POCO 有一些你需要做的配置。

1) 对于 SSL(你使用的是 Microsoft 操作系统吗?),使用推荐的 openSSL: http ://slproweb.com/products/Win32OpenSSL.htm 并下载这个相当奇怪的网站中的*4 项 - 16MB 开发人员版本,而不是“轻”版本(没有包含和其他必要的东西)。

2)如果你安装到C:\openSSL,添加到系统环境变量

INCLUDE = C:\openSSL\include
LIB = C:\openSSL\lib

(编辑您的安装基本路径)

3)在运行构建之前,编辑(在POCO安装根目录)buildwin.cmd;编辑 OPENSSL_DIR 以匹配您的安装位置

4) 运行构建(在我的例子中,对于 ViStud 2005:build_vs80.cmd)

5)构建可能仍然失败(!),进入 Crypto 和 NetSSL_OpenSSL 子目录,运行适当的 Visual Studio 解决方案,并为每个项目去配置。属性 > 链接器 > 常规,并将 $(YOUR_SSL_ROOT)\lib 添加到“其他库目录”(其中 YOUR_SSL_ROOT 是您安装 OpenSSL 的位置)。由于某种原因,这些解决方案文件中没有设置。

6)最后(我可以看到你的思考过程)POCO有几个包含路径;它不仅仅是一大桶#includes。您需要为您的项目单独包含它们中的每一个。我建议制作一个像 POCO_ROOT 或 POCO_HOME 这样的环境变量,然后在“其他包含目录”中添加如下内容:

$(POCO_BASE)\Foundation\include;
$(POCO_BASE)\Net\include;
$(POCO_BASE)\NetSSL_OpenSSL\include;
$(POCO_BASE)\Crypto\include;
C:\OpenSSL\include

我不知道为什么他们没有在一些安装说明中记录这一点(我刚刚做了)。希望有帮助。

于 2013-03-07T00:11:40.580 回答