Instalação incompleta de bibliotecas POCO C ++

0

Recentemente, comecei a usar as bibliotecas POCO C ++ para criar um cliente de e-mail simples e precisei usar SecureSMTPClientSession class, mas os relatórios do compilador

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

Quando pesquisei por bibliotecas instaladas, notei que NETSSL_OPENSSL está ausente, embora exista no arquivo baixado originalmente em pocoproject.org .

Minhas etapas de instalação seguiram INSTALL instruções

./configure
make
make install

Então, há uma maneira de instalar manualmente a biblioteca NETSSL_OPENSSL ?

Por favor, se alguém soubesse escrever um passo.

Obrigado.

    
por J.Doe 17.05.2015 / 15:45

2 respostas

0

Eu acho que você fez o mesmo que eu fiz antes ... Eu estava verificando o mais novo doc do Poco e estava usando uma versão mais antiga ... Não foi óbvio para o primeiro mas depois de um tempo eu percebi ...

Baseado neste site: [ link ] Acho que consegui criar um código para enviar SMTP sobre SSL (não pude testá-lo porque percebi que o servidor SMTP NÃO é forçado a SSL enquanto o administrador do sistema me disse que é ...)

Então o código:

#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 protected]";
    std::string from = "[email protected]";
    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;
    }
}

Espero que você possa usá-lo :) Vamos mandar abraços e beijos para o link para Cingapura:)

Boa sorte! ;)

    
por Pep 10.09.2015 / 12:29
0

No link link , faça o download do poco-1.7.6-all.zip não poco-1.7.6.zip porque poco-1.7.6-all.zip terá todos os componentes, enquanto poco-1.7.6.zip não contém todos os componentes.

SecureSMTPClientSession.h está bem presente em poco-1.7.6-all.zip .

    
por Sudhanshu 01.02.2017 / 09:10