-rw-r--r-- | noncore/net/mail/libmailwrapper/smtpwrapper.cpp | 24 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/smtpwrapper.h | 1 |
2 files changed, 24 insertions, 1 deletions
diff --git a/noncore/net/mail/libmailwrapper/smtpwrapper.cpp b/noncore/net/mail/libmailwrapper/smtpwrapper.cpp index 085d5e4..7671133 100644 --- a/noncore/net/mail/libmailwrapper/smtpwrapper.cpp +++ b/noncore/net/mail/libmailwrapper/smtpwrapper.cpp @@ -6,6 +6,7 @@ #include <string.h> #include <qdir.h> #include <qt.h> +#include <qmessagebox.h> #include <qpe/config.h> #include <qpe/qcopenvelope_qws.h> @@ -554,6 +555,17 @@ void SMTPwrapper::smtpSend( mailmime *mail,bool later, SMTPaccount *smtp ) { smtp_address_list_free( rcpts ); } +void SMTPwrapper::storeFailedMail(const char*data,unsigned int size, const char*failuremessage) +{ + if (data) { + storeMail(data,size,"Sendfailed"); + } + if (failuremessage) { + QMessageBox::critical(0,tr("Error sending mail"), + tr("<center>%1</center>").arg(failuremessage)); + } +} + int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size, SMTPaccount *smtp ) { const char *server, *user, *pass; bool ssl; @@ -589,12 +601,14 @@ int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size, SMT } if ( err != MAILSMTP_NO_ERROR ) { qDebug("Error init connection"); + storeFailedMail(data,size,mailsmtpError(err)); result = 0; goto free_mem_session; } err = mailsmtp_init( session ); if ( err != MAILSMTP_NO_ERROR ) { + storeFailedMail(data,size,mailsmtpError(err)); result = 0; goto free_con_session; } @@ -621,15 +635,23 @@ int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size, SMT } qDebug( "session->auth: %i", session->auth); err = mailsmtp_auth( session, (char*)user, (char*)pass ); - if ( err == MAILSMTP_NO_ERROR ) + if ( err == MAILSMTP_NO_ERROR ) { qDebug("auth ok"); + } else { + storeFailedMail(data,size,tr("Authentification failed")); + result = 0; + goto free_con_session; + } qDebug( "Done auth!" ); } else { qDebug("SMTP without auth"); + result = 0; + goto free_con_session; } err = mailsmtp_send( session, from, rcpts, data, size ); if ( err != MAILSMTP_NO_ERROR ) { + storeFailedMail(data,size,mailsmtpError(err)); qDebug("Error sending mail: %s",mailsmtpError(err).latin1()); result = 0; goto free_con_session; diff --git a/noncore/net/mail/libmailwrapper/smtpwrapper.h b/noncore/net/mail/libmailwrapper/smtpwrapper.h index 7dcdbfd..89826d9 100644 --- a/noncore/net/mail/libmailwrapper/smtpwrapper.h +++ b/noncore/net/mail/libmailwrapper/smtpwrapper.h @@ -60,6 +60,7 @@ protected: Settings *settings; int sendQueuedMail(AbstractMail*wrap,SMTPaccount*smtp,RecMail*which); + void storeFailedMail(const char*data,unsigned int size, const char*failuremessage); int m_queuedMail; static const char* USER_AGENT; |