Temat dodawania bibliotek już opanowany.
W projekcie demo1 klikamy na nazwę projektu i klikamy dodaj bibliotekę.
Potem w wizard'dzie wybieramy "zewnętrzną bibliotekę i zapodajemy ścieżkę do wcześniej skompilowanej biblioteki pod Qt - znajdujemy plik libSMTPEmail.a i dodajemy do wcześniej otwartego
projektu w tym wypadku demo1.
poniżej zrzut pliku demo1.pro
QT += core
QT -= gui
TARGET = demo1
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += +=\
demo1.cpp
win32: CONFIG( release, debug | release )
: LIBS += - L $ $ PWD /../../../ build - SMTPEmail - Desktop_Qt_5_6_0_MinGW_32bit - Debug / release / - lSMTPEmail else
: win32
: CONFIG( debug, debug | release )
: LIBS += - L $ $ PWD /../../../ build - SMTPEmail - Desktop_Qt_5_6_0_MinGW_32bit - Debug / debug / - lSMTPEmail else
: unix:!macx
: LIBS += - L $ $ PWD /../../../ build - SMTPEmail - Desktop_Qt_5_6_0_MinGW_32bit - Debug / - lSMTPEmail INCLUDEPATH += $ $ PWD /../../../ build - SMTPEmail - Desktop_Qt_5_6_0_MinGW_32bit - Debug / debug DEPENDPATH += $ $ PWD /../../../ build - SMTPEmail - Desktop_Qt_5_6_0_MinGW_32bit - Debug / debug win32 - g++: CONFIG( release, debug | release )
: PRE_TARGETDEPS += $ $ PWD /../../../ build - SMTPEmail - Desktop_Qt_5_6_0_MinGW_32bit - Debug / release / libSMTPEmail.a else
: win32 - g++: CONFIG( debug, debug | release )
: PRE_TARGETDEPS += $ $ PWD /../../../ build - SMTPEmail - Desktop_Qt_5_6_0_MinGW_32bit - Debug / debug / libSMTPEmail.a else
: win32:!win32 - g++: CONFIG( release, debug | release )
: PRE_TARGETDEPS += $ $ PWD /../../../ build - SMTPEmail - Desktop_Qt_5_6_0_MinGW_32bit - Debug / release / SMTPEmail.lib else
: win32:!win32 - g++: CONFIG( debug, debug | release )
: PRE_TARGETDEPS += $ $ PWD /../../../ build - SMTPEmail - Desktop_Qt_5_6_0_MinGW_32bit - Debug / debug / SMTPEmail.lib else
: unix:!macx
: PRE_TARGETDEPS += $ $ PWD /../../../ build - SMTPEmail - Desktop_Qt_5_6_0_MinGW_32bit - Debug / libSMTPEmail.a
No, ale jak to bywa nie do końca idzie jak by się chciało. Mianowicie program się kompiluje wyskakuje okno konsoli a wniej to co poniżej:
qt.network.ssl: QSslSocket: cannot resolve TLSv1_1_client_method
qt.network.ssl: QSslSocket: cannot resolve TLSv1_2_client_method
qt.network.ssl: QSslSocket: cannot resolve TLSv1_1_server_method
qt.network.ssl: QSslSocket: cannot resolve TLSv1_2_server_method
qt.network.ssl: QSslSocket: cannot resolve SSL_select_next_proto
qt.network.ssl: QSslSocket: cannot resolve SSL_CTX_set_next_proto_select_cb
qt.network.ssl: QSslSocket: cannot resolve SSL_get0_next_proto_negotiated
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_get0_next_proto_negotiated
Failed to login!
Poniżej przedstawiam kod programu demo1, który wykorzystuje bibliotekę SMTPEmail
.cpp
#include <QtCore>
#include "../../src/SmtpMime"
int main( int argc, char * argv[] )
{
QCoreApplication a( argc, argv );
SmtpClient smtp( "smtp.gmail.com", 465, SmtpClient::SslConnection );
smtp.setUser( "piernikowski.s@gmail.com" );
smtp.setPassword( "Tu wpisz swoje hasło" );
MimeMessage message;
EmailAddress sender( "piernikowski.s@gmail.com", "S.Piernikowski" );
message.setSender( & sender );
EmailAddress to( "piernikowski.s@wp.pl", "Slawomir Piernikowski" );
message.addRecipient( & to );
message.setSubject( "Test - email" );
MimeText text;
text.setText( "Hi,To jest test wysylania e-maila w Qt.\n" );
message.addPart( & text );
if( !smtp.connectToHost() ) {
qDebug() << "Failed to connect to host!" << endl;
return - 1;
}
if( !smtp.login() ) {
qDebug() << "Failed to login!" << endl;
return - 2;
}
if( !smtp.sendMail( message ) ) {
qDebug() << "Failed to send mail!" << endl;
return - 3;
}
smtp.quit();
}
Tak jak pisałem na początku zaraz po założeniu tego tematu - jest mnóstwo gotowców, bibliotek, ale ciężko to zaadoptować do własnego projektu - może jakiś ekspert spróbuje????
Pozdrawiam