summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/libmailwrapper/smtpwrapper.cpp24
-rw-r--r--noncore/net/mail/libmailwrapper/smtpwrapper.h1
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 @@
6#include <string.h> 6#include <string.h>
7#include <qdir.h> 7#include <qdir.h>
8#include <qt.h> 8#include <qt.h>
9#include <qmessagebox.h>
9 10
10#include <qpe/config.h> 11#include <qpe/config.h>
11#include <qpe/qcopenvelope_qws.h> 12#include <qpe/qcopenvelope_qws.h>
@@ -554,6 +555,17 @@ void SMTPwrapper::smtpSend( mailmime *mail,bool later, SMTPaccount *smtp ) {
554 smtp_address_list_free( rcpts ); 555 smtp_address_list_free( rcpts );
555} 556}
556 557
558void SMTPwrapper::storeFailedMail(const char*data,unsigned int size, const char*failuremessage)
559{
560 if (data) {
561 storeMail(data,size,"Sendfailed");
562 }
563 if (failuremessage) {
564 QMessageBox::critical(0,tr("Error sending mail"),
565 tr("<center>%1</center>").arg(failuremessage));
566 }
567}
568
557int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size, SMTPaccount *smtp ) { 569int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size, SMTPaccount *smtp ) {
558 const char *server, *user, *pass; 570 const char *server, *user, *pass;
559 bool ssl; 571 bool ssl;
@@ -589,12 +601,14 @@ int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size, SMT
589 } 601 }
590 if ( err != MAILSMTP_NO_ERROR ) { 602 if ( err != MAILSMTP_NO_ERROR ) {
591 qDebug("Error init connection"); 603 qDebug("Error init connection");
604 storeFailedMail(data,size,mailsmtpError(err));
592 result = 0; 605 result = 0;
593 goto free_mem_session; 606 goto free_mem_session;
594 } 607 }
595 608
596 err = mailsmtp_init( session ); 609 err = mailsmtp_init( session );
597 if ( err != MAILSMTP_NO_ERROR ) { 610 if ( err != MAILSMTP_NO_ERROR ) {
611 storeFailedMail(data,size,mailsmtpError(err));
598 result = 0; 612 result = 0;
599 goto free_con_session; 613 goto free_con_session;
600 } 614 }
@@ -621,15 +635,23 @@ int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size, SMT
621 } 635 }
622 qDebug( "session->auth: %i", session->auth); 636 qDebug( "session->auth: %i", session->auth);
623 err = mailsmtp_auth( session, (char*)user, (char*)pass ); 637 err = mailsmtp_auth( session, (char*)user, (char*)pass );
624 if ( err == MAILSMTP_NO_ERROR ) 638 if ( err == MAILSMTP_NO_ERROR ) {
625 qDebug("auth ok"); 639 qDebug("auth ok");
640 } else {
641 storeFailedMail(data,size,tr("Authentification failed"));
642 result = 0;
643 goto free_con_session;
644 }
626 qDebug( "Done auth!" ); 645 qDebug( "Done auth!" );
627 } else { 646 } else {
628 qDebug("SMTP without auth"); 647 qDebug("SMTP without auth");
648 result = 0;
649 goto free_con_session;
629 } 650 }
630 651
631 err = mailsmtp_send( session, from, rcpts, data, size ); 652 err = mailsmtp_send( session, from, rcpts, data, size );
632 if ( err != MAILSMTP_NO_ERROR ) { 653 if ( err != MAILSMTP_NO_ERROR ) {
654 storeFailedMail(data,size,mailsmtpError(err));
633 qDebug("Error sending mail: %s",mailsmtpError(err).latin1()); 655 qDebug("Error sending mail: %s",mailsmtpError(err).latin1());
634 result = 0; 656 result = 0;
635 goto free_con_session; 657 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:
60 Settings *settings; 60 Settings *settings;
61 61
62 int sendQueuedMail(AbstractMail*wrap,SMTPaccount*smtp,RecMail*which); 62 int sendQueuedMail(AbstractMail*wrap,SMTPaccount*smtp,RecMail*which);
63 void storeFailedMail(const char*data,unsigned int size, const char*failuremessage);
63 64
64 int m_queuedMail; 65 int m_queuedMail;
65 static const char* USER_AGENT; 66 static const char* USER_AGENT;