summaryrefslogtreecommitdiff
authoralwin <alwin>2004-01-12 14:36:22 (UTC)
committer alwin <alwin>2004-01-12 14:36:22 (UTC)
commit713a845a0d2ad3aba8230a5ba743a1c7b1622ef1 (patch) (unidiff)
tree99b6072598bbac82a5beaf22aa432d808c1ad9b3
parent2a0686efdcce2c6bd572468d0f340f3188d00c8c (diff)
downloadopie-713a845a0d2ad3aba8230a5ba743a1c7b1622ef1.zip
opie-713a845a0d2ad3aba8230a5ba743a1c7b1622ef1.tar.gz
opie-713a845a0d2ad3aba8230a5ba743a1c7b1622ef1.tar.bz2
generating clean failuremessages
bugfix - smtp without login was resolved as wrong when sending enqueued mails login will asked when starting flush not on every mail.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/libmailwrapper/smtpwrapper.cpp108
1 files changed, 67 insertions, 41 deletions
diff --git a/noncore/net/mail/libmailwrapper/smtpwrapper.cpp b/noncore/net/mail/libmailwrapper/smtpwrapper.cpp
index 7671133..e8db9ca 100644
--- a/noncore/net/mail/libmailwrapper/smtpwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/smtpwrapper.cpp
@@ -20,6 +20,5 @@
20#include "mailtypes.h" 20#include "mailtypes.h"
21//#include "defines.h"
22#include "sendmailprogress.h" 21#include "sendmailprogress.h"
23 22
24const char* SMTPwrapper::USER_AGENT="OpieMail v0.3"; 23const char* SMTPwrapper::USER_AGENT="OpieMail v0.4";
25 24
@@ -574,2 +573,3 @@ int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size, SMT
574 int err,result; 573 int err,result;
574 QString failuretext = "";
575 575
@@ -590,4 +590,7 @@ int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size, SMT
590 session = mailsmtp_new( 20, &progress ); 590 session = mailsmtp_new( 20, &progress );
591 if ( session == NULL ) 591 if ( session == NULL ) {
592 goto free_mem; 592 /* no failure message cause this happens when problems with memory - than we
593 we can not display any messagebox */
594 return 0;
595 }
593 596
@@ -603,17 +606,15 @@ int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size, SMT
603 qDebug("Error init connection"); 606 qDebug("Error init connection");
604 storeFailedMail(data,size,mailsmtpError(err)); 607 failuretext = tr("Error init SMTP connection: %1").arg(mailsmtpError(err));
605 result = 0; 608 result = 0;
606 goto free_mem_session;
607 } 609 }
608 610
609 err = mailsmtp_init( session ); 611 if (result) {
610 if ( err != MAILSMTP_NO_ERROR ) { 612 err = mailsmtp_init( session );
611 storeFailedMail(data,size,mailsmtpError(err)); 613 if (err != MAILSMTP_NO_ERROR) {
612 result = 0; 614 result = 0;
613 goto free_con_session; 615 failuretext = tr("Error init SMTP connection: %1").arg(mailsmtpError(err));
616 }
614 } 617 }
615 618
616 qDebug( "INIT OK" ); 619 if (result==1 && smtp->getLogin() ) {
617
618 if ( smtp->getLogin() ) {
619 qDebug("smtp with auth"); 620 qDebug("smtp with auth");
@@ -629,3 +630,3 @@ int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size, SMT
629 result = 0; 630 result = 0;
630 goto free_con_session; 631 failuretext=tr("Login aborted - storing mail to localfolder");
631 } 632 }
@@ -636,33 +637,31 @@ int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size, SMT
636 qDebug( "session->auth: %i", session->auth); 637 qDebug( "session->auth: %i", session->auth);
637 err = mailsmtp_auth( session, (char*)user, (char*)pass ); 638 if (result) {
638 if ( err == MAILSMTP_NO_ERROR ) { 639 err = mailsmtp_auth( session, (char*)user, (char*)pass );
639 qDebug("auth ok"); 640 if ( err == MAILSMTP_NO_ERROR ) {
640 } else { 641 qDebug("auth ok");
641 storeFailedMail(data,size,tr("Authentification failed")); 642 } else {
642 result = 0; 643 failuretext = tr("Authentification failed");
643 goto free_con_session; 644 result = 0;
645 }
644 } 646 }
645 qDebug( "Done auth!" );
646 } else {
647 qDebug("SMTP without auth");
648 result = 0;
649 goto free_con_session;
650 } 647 }
651 648
652 err = mailsmtp_send( session, from, rcpts, data, size ); 649 if (result) {
653 if ( err != MAILSMTP_NO_ERROR ) { 650 err = mailsmtp_send( session, from, rcpts, data, size );
654 storeFailedMail(data,size,mailsmtpError(err)); 651 if ( err != MAILSMTP_NO_ERROR ) {
655 qDebug("Error sending mail: %s",mailsmtpError(err).latin1()); 652 failuretext=tr("Error sending mail: %1").arg(mailsmtpError(err));
656 result = 0; 653 result = 0;
657 goto free_con_session; 654 }
658 } 655 }
659 656
660 qDebug( "Mail sent." ); 657 if (!result) {
661 storeMail(data,size,"Sent"); 658 storeFailedMail(data,size,failuretext);
662 659 } else {
663free_con_session: 660 qDebug( "Mail sent." );
664 mailsmtp_quit( session ); 661 storeMail(data,size,"Sent");
665free_mem_session: 662 }
666 mailsmtp_free( session ); 663 if (session) {
667free_mem: 664 mailsmtp_quit( session );
665 mailsmtp_free( session );
666 }
668 return result; 667 return result;
@@ -743,2 +742,3 @@ bool SMTPwrapper::flushOutbox(SMTPaccount*smtp) {
743 742
743 bool reset_user_value = false;
744 QString localfolders = AbstractMail::defaultLocalfolder(); 744 QString localfolders = AbstractMail::defaultLocalfolder();
@@ -749,2 +749,3 @@ bool SMTPwrapper::flushOutbox(SMTPaccount*smtp) {
749 } 749 }
750 QString oldPw, oldUser;
750 QList<RecMail> mailsToSend; 751 QList<RecMail> mailsToSend;
@@ -757,2 +758,23 @@ bool SMTPwrapper::flushOutbox(SMTPaccount*smtp) {
757 } 758 }
759
760 oldPw = smtp->getPassword();
761 oldUser = smtp->getUser();
762 if (smtp->getLogin() && (smtp->getUser().isEmpty() || smtp->getPassword().isEmpty()) ) {
763 // get'em
764 QString user,pass;
765 LoginDialog login( smtp->getUser(), smtp->getPassword(), NULL, 0, true );
766 login.show();
767 if ( QDialog::Accepted == login.exec() ) {
768 // ok
769 user = login.getUser().latin1();
770 pass = login.getPassword().latin1();
771 reset_user_value = true;
772 smtp->setUser(user);
773 smtp->setPassword(pass);
774 } else {
775 return true;
776 }
777 }
778
779
758 mailsToSend.setAutoDelete(false); 780 mailsToSend.setAutoDelete(false);
@@ -773,2 +795,6 @@ bool SMTPwrapper::flushOutbox(SMTPaccount*smtp) {
773 } 795 }
796 if (reset_user_value) {
797 smtp->setUser(oldUser);
798 smtp->setPassword(oldPw);
799 }
774 Config cfg( "mail" ); 800 Config cfg( "mail" );