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
@@ -3,12 +3,13 @@
3#include <sys/types.h> 3#include <sys/types.h>
4#include <unistd.h> 4#include <unistd.h>
5#include <fcntl.h> 5#include <fcntl.h>
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>
12 13
13#include <libetpan/libetpan.h> 14#include <libetpan/libetpan.h>
14 15
@@ -551,12 +552,23 @@ void SMTPwrapper::smtpSend( mailmime *mail,bool later, SMTPaccount *smtp ) {
551 free(from); 552 free(from);
552 } 553 }
553 if (rcpts) 554 if (rcpts)
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;
560 uint16_t port; 572 uint16_t port;
561 mailsmtp *session; 573 mailsmtp *session;
562 int err,result; 574 int err,result;
@@ -586,18 +598,20 @@ int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size, SMT
586 } else { 598 } else {
587 qDebug( "No SSL session" ); 599 qDebug( "No SSL session" );
588 err = mailsmtp_socket_connect( session, server, port ); 600 err = mailsmtp_socket_connect( session, server, port );
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 }
601 615
602 qDebug( "INIT OK" ); 616 qDebug( "INIT OK" );
603 617
@@ -618,21 +632,29 @@ int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size, SMT
618 } else { 632 } else {
619 user = smtp->getUser().latin1(); 633 user = smtp->getUser().latin1();
620 pass = smtp->getPassword().latin1(); 634 pass = smtp->getPassword().latin1();
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;
636 } 658 }
637 659
638 qDebug( "Mail sent." ); 660 qDebug( "Mail sent." );
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
@@ -57,12 +57,13 @@ protected:
57 int smtpSend(char*from,clist*rcpts,const char*data,size_t size, SMTPaccount *smtp ); 57 int smtpSend(char*from,clist*rcpts,const char*data,size_t size, SMTPaccount *smtp );
58 58
59 void storeMail(mailmime*mail, const QString&box); 59 void storeMail(mailmime*mail, const QString&box);
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;
66 67
67protected slots: 68protected slots:
68 void emitQCop( int queued ); 69 void emitQCop( int queued );