Неполная установка библиотек POCO C++

Недавно я начал использовать библиотеки POCO C++ для создания простого почтового клиента, и мне нужно было использовать SecureSMTPClientSession класс, но отчеты компилятора

Poco/Net/SecureSMTPClientSession.h: No such file or directory

Когда я искал через установленные библиотеки, я заметил, что NETSSL_OPENSSL отсутствует, хотя он существует в первоначально загруженном файле с http://pocoproject.org/.

Мои шаги установки следовали INSTALL инструкции

./configure
make
make install

Так есть ли способ установить вручную NETSSL_OPENSSL библиотека?

Пожалуйста, если кто-нибудь знал, чтобы написать шаги.

Спасибо.

2 ответа

По ссылке https://pocoproject.org/releases/poco-1.7.6/ загрузите poco-1.7.6-all.zip не poco-1.7.6.zip так как poco-1.7.6-all.zip будет иметь все компоненты в то время как poco-1.7.6.zip не содержит все компоненты.

SecureSMTPClientSession.h хорошо присутствует в poco-1.7.6-all.zip,

Я думаю, что вы сделали то же самое, что и я раньше... Я проверял новейший документ Poco и использовал более старую версию... Это было неочевидно для первой, но через некоторое время я понял...

Основываясь на этом сайте: [ http://axistasoft.com/blog/poco/poco-net/item/sending-email-messages-using-poco-securestreamsocket-securesmtpclientsession-class ] Я думаю, что мне удалось создать код для отправки SMTP через SSL (я не смог проверить это, потому что понял, что SMTP-сервер НЕ принудительно SSL, а системный администратор сказал мне, что это...)

Итак, код:

#include <Poco/Crypto/OpenSSLInitializer.h>
#include <Poco/Net/MailMessage.h>
#include <Poco/Net/MailRecipient.h>
#include <Poco/Net/SecureStreamSocket.h>
#include <Poco/Net/SMTPClientSession.h>
#include <Poco/Net/NetException.h>
#include <Poco/Net/Context.h>
#include <Poco/Net/SSLManager.h>
#include <Poco/Net/AcceptCertificateHandler.h>
#include <Poco/AutoPtr.h>

void sendMail() {
    using Poco::Net::MailMessage;
    using Poco::Net::MailRecipient;
    using Poco::Net::InvalidCertificateHandler;
    using Poco::Net::AcceptCertificateHandler;
    using Poco::Net::Context;
    using Poco::Net::SSLManager;
    using Poco::Net::SocketAddress;
    using Poco::Net::SecureStreamSocket;
    using Poco::Net::StreamSocket;
    using Poco::Net::SMTPClientSession;
    using Poco::Net::SMTPException;
    using Poco::Net::NetException;
    using Poco::Crypto::OpenSSLInitializer;
    using Poco::SharedPtr;

    std::string host = "smtp_host.com";
    int port = 465;
    std::string user = "smtp-user";
    std::string password = "smtp-password";
    std::string to = "email-recipient@example.com";
    std::string from = "email-sender@example.com";
    std::string subject = "This is the subject";
    subject = Poco::Net::MailMessage::encodeWord(subject, "UTF-8");
    std::string content = "This is the message body";

    MailMessage message;
    message.setSender(from);
    message.addRecipient(MailRecipient(MailRecipient::PRIMARY_RECIPIENT, to));
    message.setSubject(subject);
    message.setContentType("text/plain; charset=UTF-8");
    message.setContent(content, MailMessage::ENCODING_8BIT);

    try {
        OpenSSLInitializer::initialize();
        SharedPtr<InvalidCertificateHandler> ptrHandler = new AcceptCertificateHandler(false);
        Context::Ptr ptrContext = new Context(Context::CLIENT_USE, "", "", "", Context::VERIFY_RELAXED, 9, true, "ALL:!ADH:!LOW:!EXP:!MD5:@STRENGTH");
        SSLManager::instance().initializeClient(0, ptrHandler, ptrContext);

        SocketAddress sa(host, port);
        SecureStreamSocket socket(sa);
        SMTPClientSession session(socket);

        try {
            session.login(SMTPClientSession::AUTH_LOGIN, user, password);
            session.sendMessage(message);
            session.close();
            OpenSSLInitializer::uninitialize();
        } catch (SMTPException &e) {
            _errorOccurred(e.displayText());
            session.close();
            OpenSSLInitializer::uninitialize();
            return;
        }
    } catch (NetException &e) {
        _errorOccurred(e.displayText());
        return;
    }
}

Я надеюсь, что вы можете использовать его:) Давайте отправим объятия и поцелуи на http://axistasoft.com/ в Сингапур:)

Удачи!;)

Другие вопросы по тегам