summaryrefslogtreecommitdiff
path: root/noncore/net/mail/smtpwrapper.cpp
Side-by-side diff
Diffstat (limited to 'noncore/net/mail/smtpwrapper.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/smtpwrapper.cpp732
1 files changed, 0 insertions, 732 deletions
diff --git a/noncore/net/mail/smtpwrapper.cpp b/noncore/net/mail/smtpwrapper.cpp
deleted file mode 100644
index 7e03af9..0000000
--- a/noncore/net/mail/smtpwrapper.cpp
+++ b/dev/null
@@ -1,732 +0,0 @@
-#include <stdlib.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <string.h>
-#include <qdir.h>
-#include <qt.h>
-
-#include <qpe/config.h>
-#include <qpe/qcopenvelope_qws.h>
-
-#include <libetpan/libetpan.h>
-
-#include "smtpwrapper.h"
-#include "mailwrapper.h"
-#include "mboxwrapper.h"
-#include "logindialog.h"
-#include "mailtypes.h"
-#include "defines.h"
-#include "sendmailprogress.h"
-
-progressMailSend*SMTPwrapper::sendProgress = 0;
-
-SMTPwrapper::SMTPwrapper( Settings *s )
- : QObject()
-{
- settings = s;
- Config cfg( "mail" );
- cfg.setGroup( "Status" );
- m_queuedMail = cfg.readNumEntry( "outgoing", 0 );
- emit queuedMails( m_queuedMail );
- connect( this, SIGNAL( queuedMails( int ) ), this, SLOT( emitQCop( int ) ) );
-}
-
-void SMTPwrapper::emitQCop( int queued ) {
- QCopEnvelope env( "QPE/Pim", "outgoingMails(int)" );
- env << queued;
-}
-
-QString SMTPwrapper::mailsmtpError( int errnum )
-{
- switch ( errnum ) {
- case MAILSMTP_NO_ERROR:
- return tr( "No error" );
- case MAILSMTP_ERROR_UNEXPECTED_CODE:
- return tr( "Unexpected error code" );
- case MAILSMTP_ERROR_SERVICE_NOT_AVAILABLE:
- return tr( "Service not available" );
- case MAILSMTP_ERROR_STREAM:
- return tr( "Stream error" );
- case MAILSMTP_ERROR_HOSTNAME:
- return tr( "gethostname() failed" );
- case MAILSMTP_ERROR_NOT_IMPLEMENTED:
- return tr( "Not implemented" );
- case MAILSMTP_ERROR_ACTION_NOT_TAKEN:
- return tr( "Error, action not taken" );
- case MAILSMTP_ERROR_EXCEED_STORAGE_ALLOCATION:
- return tr( "Data exceeds storage allocation" );
- case MAILSMTP_ERROR_IN_PROCESSING:
- return tr( "Error in processing" );
- // case MAILSMTP_ERROR_INSUFFISANT_SYSTEM_STORAGE:
- // return tr( "Insufficient system storage" );
- case MAILSMTP_ERROR_MAILBOX_UNAVAILABLE:
- return tr( "Mailbox unavailable" );
- case MAILSMTP_ERROR_MAILBOX_NAME_NOT_ALLOWED:
- return tr( "Mailbox name not allowed" );
- case MAILSMTP_ERROR_BAD_SEQUENCE_OF_COMMAND:
- return tr( "Bad command sequence" );
- case MAILSMTP_ERROR_USER_NOT_LOCAL:
- return tr( "User not local" );
- case MAILSMTP_ERROR_TRANSACTION_FAILED:
- return tr( "Transaction failed" );
- case MAILSMTP_ERROR_MEMORY:
- return tr( "Memory error" );
- case MAILSMTP_ERROR_CONNECTION_REFUSED:
- return tr( "Connection refused" );
- default:
- return tr( "Unknown error code" );
- }
-}
-
-mailimf_mailbox *SMTPwrapper::newMailbox(const QString&name, const QString&mail )
-{
- return mailimf_mailbox_new( strdup( name.latin1() ),
- strdup( mail.latin1() ) );
-}
-
-mailimf_address_list *SMTPwrapper::parseAddresses(const QString&addr )
-{
- mailimf_address_list *addresses;
-
- if ( addr.isEmpty() ) return NULL;
-
- addresses = mailimf_address_list_new_empty();
-
- bool literal_open = false;
- unsigned int startpos = 0;
- QStringList list;
- QString s;
- unsigned int i = 0;
- for (; i < addr.length();++i) {
- switch (addr[i]) {
- case '\"':
- literal_open = !literal_open;
- break;
- case ',':
- if (!literal_open) {
- s = addr.mid(startpos,i-startpos);
- if (!s.isEmpty()) {
- list.append(s);
- qDebug("Appended %s",s.latin1());
- }
- // !!!! this is a MUST BE!
- startpos = ++i;
- }
- break;
- default:
- break;
- }
- }
- s = addr.mid(startpos,i-startpos);
- if (!s.isEmpty()) {
- list.append(s);
- qDebug("Appended %s",s.latin1());
- }
- QStringList::Iterator it;
- for ( it = list.begin(); it != list.end(); it++ ) {
- int err = mailimf_address_list_add_parse( addresses, (char*)(*it).latin1() );
- if ( err != MAILIMF_NO_ERROR ) {
- qDebug( "Error parsing" );
- qDebug( *it );
- } else {
- qDebug( "Parse success! %s",(*it).latin1());
- }
- }
- return addresses;
-}
-
-mailimf_fields *SMTPwrapper::createImfFields(const Mail&mail )
-{
- mailimf_fields *fields;
- mailimf_field *xmailer;
- mailimf_mailbox *sender=0,*fromBox=0;
- mailimf_mailbox_list *from=0;
- mailimf_address_list *to=0, *cc=0, *bcc=0, *reply=0;
- char *subject = strdup( mail.getSubject().latin1() );
- int err;
-
- sender = newMailbox( mail.getName(), mail.getMail() );
- if ( sender == NULL ) goto err_free;
-
- fromBox = newMailbox( mail.getName(), mail.getMail() );
- if ( fromBox == NULL ) goto err_free_sender;
-
- from = mailimf_mailbox_list_new_empty();
- if ( from == NULL ) goto err_free_fromBox;
-
- err = mailimf_mailbox_list_add( from, fromBox );
- if ( err != MAILIMF_NO_ERROR ) goto err_free_from;
-
- to = parseAddresses( mail.getTo() );
- if ( to == NULL ) goto err_free_from;
-
- cc = parseAddresses( mail.getCC() );
- bcc = parseAddresses( mail.getBCC() );
- reply = parseAddresses( mail.getReply() );
-
- fields = mailimf_fields_new_with_data( from, sender, reply, to, cc, bcc,
- NULL, NULL, subject );
- if ( fields == NULL ) goto err_free_reply;
-
- xmailer = mailimf_field_new_custom( strdup( "User-Agent" ),
- strdup( USER_AGENT ) );
- if ( xmailer == NULL ) goto err_free_fields;
-
- err = mailimf_fields_add( fields, xmailer );
- if ( err != MAILIMF_NO_ERROR ) goto err_free_xmailer;
-
- return fields; // Success :)
-
-err_free_xmailer:
- if (xmailer) mailimf_field_free( xmailer );
-err_free_fields:
- if (fields) mailimf_fields_free( fields );
-err_free_reply:
- if (reply) mailimf_address_list_free( reply );
- if (bcc) mailimf_address_list_free( bcc );
- if (cc) mailimf_address_list_free( cc );
- if (to) mailimf_address_list_free( to );
-err_free_from:
- if (from) mailimf_mailbox_list_free( from );
-err_free_fromBox:
- mailimf_mailbox_free( fromBox );
-err_free_sender:
- if (sender) mailimf_mailbox_free( sender );
-err_free:
- if (subject) free( subject );
- qDebug( "createImfFields - error" );
-
- return NULL; // Error :(
-}
-
-mailmime *SMTPwrapper::buildTxtPart(const QString&str )
-{
- mailmime *txtPart;
- mailmime_fields *fields;
- mailmime_content *content;
- mailmime_parameter *param;
- int err;
-
- param = mailmime_parameter_new( strdup( "charset" ),
- strdup( "iso-8859-1" ) );
- if ( param == NULL ) goto err_free;
-
- content = mailmime_content_new_with_str( "text/plain" );
- if ( content == NULL ) goto err_free_param;
-
- err = clist_append( content->ct_parameters, param );
- if ( err != MAILIMF_NO_ERROR ) goto err_free_content;
-
- fields = mailmime_fields_new_encoding(MAILMIME_MECHANISM_8BIT);
- if ( fields == NULL ) goto err_free_content;
-
- txtPart = mailmime_new_empty( content, fields );
- if ( txtPart == NULL ) goto err_free_fields;
-
- err = mailmime_set_body_text( txtPart, (char*)str.data(), str.length() );
- if ( err != MAILIMF_NO_ERROR ) goto err_free_txtPart;
-
- return txtPart; // Success :)
-
-err_free_txtPart:
- mailmime_free( txtPart );
-err_free_fields:
- mailmime_fields_free( fields );
-err_free_content:
- mailmime_content_free( content );
-err_free_param:
- mailmime_parameter_free( param );
-err_free:
- qDebug( "buildTxtPart - error" );
-
- return NULL; // Error :(
-}
-
-mailmime *SMTPwrapper::buildFilePart(const QString&filename,const QString&mimetype,const QString&TextContent )
-{
- mailmime * filePart = 0;
- mailmime_fields * fields = 0;
- mailmime_content * content = 0;
- mailmime_parameter * param = 0;
- char*name = 0;
- char*file = 0;
- int err;
-
- int pos = filename.findRev( '/' );
-
- if (filename.length()>0) {
- QString tmp = filename.right( filename.length() - ( pos + 1 ) );
- name = strdup( tmp.latin1() ); // just filename
- file = strdup( filename.latin1() ); // full name with path
- }
-
- int disptype = MAILMIME_DISPOSITION_TYPE_ATTACHMENT;
- int mechanism = MAILMIME_MECHANISM_BASE64;
-
- if ( mimetype.startsWith( "text/" ) ) {
- param = mailmime_parameter_new( strdup( "charset" ),
- strdup( "iso-8859-1" ) );
- mechanism = MAILMIME_MECHANISM_QUOTED_PRINTABLE;
- }
-
- fields = mailmime_fields_new_filename(
- disptype, name,
- mechanism );
- content = mailmime_content_new_with_str( (char*)mimetype.latin1() );
- if (content!=0 && fields != 0) {
- if (param) {
- clist_append(content->ct_parameters,param);
- param = 0;
- }
- if (filename.length()>0) {
- QFileInfo f(filename);
- param = mailmime_parameter_new(strdup("name"),strdup(f.fileName().latin1()));
- clist_append(content->ct_parameters,param);
- param = 0;
- }
- filePart = mailmime_new_empty( content, fields );
- }
- if (filePart) {
- if (filename.length()>0) {
- err = mailmime_set_body_file( filePart, file );
- } else {
- err = mailmime_set_body_text(filePart,strdup(TextContent.data()),TextContent.length());
- }
- if (err != MAILIMF_NO_ERROR) {
- qDebug("Error setting body with file %s",file);
- mailmime_free( filePart );
- filePart = 0;
- }
- }
-
- if (!filePart) {
- if ( param != NULL ) {
- mailmime_parameter_free( param );
- }
- if (content) {
- mailmime_content_free( content );
- }
- if (fields) {
- mailmime_fields_free( fields );
- } else {
- if (name) {
- free( name );
- }
- if (file) {
- free( file );
- }
- }
- }
- return filePart; // Success :)
-
-}
-
-void SMTPwrapper::addFileParts( mailmime *message,const QList<Attachment>&files )
-{
- const Attachment *it;
- unsigned int count = files.count();
- qDebug("List contains %i values",count);
- for ( unsigned int i = 0; i < count; ++i ) {
- qDebug( "Adding file" );
- mailmime *filePart;
- int err;
- it = ((QList<Attachment>)files).at(i);
-
- filePart = buildFilePart( it->getFileName(), it->getMimeType(),"" );
- if ( filePart == NULL ) {
- qDebug( "addFileParts: error adding file:" );
- qDebug( it->getFileName() );
- continue;
- }
- err = mailmime_smart_add_part( message, filePart );
- if ( err != MAILIMF_NO_ERROR ) {
- mailmime_free( filePart );
- qDebug("error smart add");
- }
- }
-}
-
-mailmime *SMTPwrapper::createMimeMail(const Mail &mail )
-{
- mailmime *message, *txtPart;
- mailimf_fields *fields;
- int err;
-
- fields = createImfFields( mail );
- if ( fields == NULL ) goto err_free;
-
- message = mailmime_new_message_data( NULL );
- if ( message == NULL ) goto err_free_fields;
-
- mailmime_set_imf_fields( message, fields );
-
- txtPart = buildTxtPart( mail.getMessage() );
-
- if ( txtPart == NULL ) goto err_free_message;
-
- err = mailmime_smart_add_part( message, txtPart );
- if ( err != MAILIMF_NO_ERROR ) goto err_free_txtPart;
-
- addFileParts( message, mail.getAttachments() );
-
- return message; // Success :)
-
-err_free_txtPart:
- mailmime_free( txtPart );
-err_free_message:
- mailmime_free( message );
-err_free_fields:
- mailimf_fields_free( fields );
-err_free:
- qDebug( "createMimeMail: error" );
-
- return NULL; // Error :(
-}
-
-mailimf_field *SMTPwrapper::getField( mailimf_fields *fields, int type )
-{
- mailimf_field *field;
- clistiter *it;
-
- it = clist_begin( fields->fld_list );
- while ( it ) {
- field = (mailimf_field *) it->data;
- if ( field->fld_type == type ) {
- return field;
- }
- it = it->next;
- }
-
- return NULL;
-}
-
-void SMTPwrapper::addRcpts( clist *list, mailimf_address_list *addr_list )
-{
- clistiter *it, *it2;
-
- for ( it = clist_begin( addr_list->ad_list ); it; it = it->next ) {
- mailimf_address *addr;
- addr = (mailimf_address *) it->data;
-
- if ( addr->ad_type == MAILIMF_ADDRESS_MAILBOX ) {
- esmtp_address_list_add( list, addr->ad_data.ad_mailbox->mb_addr_spec, 0, NULL );
- } else if ( addr->ad_type == MAILIMF_ADDRESS_GROUP ) {
- clist *l = addr->ad_data.ad_group->grp_mb_list->mb_list;
- for ( it2 = clist_begin( l ); it2; it2 = it2->next ) {
- mailimf_mailbox *mbox;
- mbox = (mailimf_mailbox *) it2->data;
- esmtp_address_list_add( list, mbox->mb_addr_spec, 0, NULL );
- }
- }
- }
-}
-
-clist *SMTPwrapper::createRcptList( mailimf_fields *fields )
-{
- clist *rcptList;
- mailimf_field *field;
-
- rcptList = esmtp_address_list_new();
-
- field = getField( fields, MAILIMF_FIELD_TO );
- if ( field && (field->fld_type == MAILIMF_FIELD_TO)
- && field->fld_data.fld_to->to_addr_list ) {
- addRcpts( rcptList, field->fld_data.fld_to->to_addr_list );
- }
-
- field = getField( fields, MAILIMF_FIELD_CC );
- if ( field && (field->fld_type == MAILIMF_FIELD_CC)
- && field->fld_data.fld_cc->cc_addr_list ) {
- addRcpts( rcptList, field->fld_data.fld_cc->cc_addr_list );
- }
-
- field = getField( fields, MAILIMF_FIELD_BCC );
- if ( field && (field->fld_type == MAILIMF_FIELD_BCC)
- && field->fld_data.fld_bcc->bcc_addr_list ) {
- addRcpts( rcptList, field->fld_data.fld_bcc->bcc_addr_list );
- }
-
- return rcptList;
-}
-
-char *SMTPwrapper::getFrom( mailimf_field *ffrom)
-{
- char *from = NULL;
- if ( ffrom && (ffrom->fld_type == MAILIMF_FIELD_FROM)
- && ffrom->fld_data.fld_from->frm_mb_list && ffrom->fld_data.fld_from->frm_mb_list->mb_list ) {
- clist *cl = ffrom->fld_data.fld_from->frm_mb_list->mb_list;
- clistiter *it;
- for ( it = clist_begin( cl ); it; it = it->next ) {
- mailimf_mailbox *mb = (mailimf_mailbox *) it->data;
- from = strdup( mb->mb_addr_spec );
- }
- }
-
- return from;
-}
-
-char *SMTPwrapper::getFrom( mailmime *mail )
-{
- /* no need to delete - its just a pointer to structure content */
- mailimf_field *ffrom = 0;
- ffrom = getField( mail->mm_data.mm_message.mm_fields, MAILIMF_FIELD_FROM );
- return getFrom(ffrom);
-}
-
-void SMTPwrapper::progress( size_t current, size_t maximum )
-{
- if (SMTPwrapper::sendProgress) {
- SMTPwrapper::sendProgress->setSingleMail(current, maximum );
- qApp->processEvents();
- }
-}
-
-void SMTPwrapper::storeMail(char*mail, size_t length, const QString&box)
-{
- if (!mail) return;
- QString localfolders = (QString) getenv( "HOME" ) + QString("/Applications/opiemail/localmail/");
- MBOXwrapper*wrap = new MBOXwrapper(localfolders);
- wrap->storeMessage(mail,length,box);
- delete wrap;
-}
-
-void SMTPwrapper::smtpSend( mailmime *mail,bool later, SMTPaccount *smtp )
-{
- clist *rcpts = 0;
- char *from, *data;
- size_t size;
-
- if ( smtp == NULL ) {
- return;
- }
- from = data = 0;
-
- mailmessage * msg = 0;
- msg = mime_message_init(mail);
- mime_message_set_tmpdir(msg,getenv( "HOME" ));
- int r = mailmessage_fetch(msg,&data,&size);
- mime_message_detach_mime(msg);
- mailmessage_free(msg);
- if (r != MAIL_NO_ERROR || !data) {
- if (data) free(data);
- qDebug("Error fetching mime...");
- return;
- }
- QString tmp = data;
- tmp.replace(QRegExp("\r+",true,false),"");
- msg = 0;
- if (later) {
- storeMail((char*)tmp.data(),tmp.length(),"Outgoing");
- if (data) free( data );
- Config cfg( "mail" );
- cfg.setGroup( "Status" );
- cfg.writeEntry( "outgoing", ++m_queuedMail );
- emit queuedMails( m_queuedMail );
- return;
- }
- from = getFrom( mail );
- rcpts = createRcptList( mail->mm_data.mm_message.mm_fields );
- smtpSend(from,rcpts,data,size,smtp);
- if (data) {free(data);}
- if (from) {free(from);}
- if (rcpts) smtp_address_list_free( rcpts );
-}
-
-int SMTPwrapper::smtpSend(char*from,clist*rcpts,char*data,size_t size, SMTPaccount *smtp )
-{
- char *server, *user, *pass;
- bool ssl;
- uint16_t port;
- mailsmtp *session;
- int err,result;
-
- result = 1;
- server = user = pass = 0;
- server = strdup( smtp->getServer().latin1() );
- ssl = smtp->getSSL();
- port = smtp->getPort().toUInt();
-
- session = mailsmtp_new( 20, &progress );
- if ( session == NULL ) goto free_mem;
-
- qDebug( "Servername %s at port %i", server, port );
- if ( ssl ) {
- qDebug( "SSL session" );
- err = mailsmtp_ssl_connect( session, server, port );
- } else {
- qDebug( "No SSL session" );
- err = mailsmtp_socket_connect( session, server, port );
- }
- if ( err != MAILSMTP_NO_ERROR ) {result = 0;goto free_mem_session;}
-
- err = mailsmtp_init( session );
- if ( err != MAILSMTP_NO_ERROR ) {result = 0; goto free_con_session;}
-
- qDebug( "INIT OK" );
-
- if ( smtp->getLogin() ) {
- if ( smtp->getUser().isEmpty() || smtp->getPassword().isEmpty() ) {
- // get'em
- LoginDialog login( smtp->getUser(), smtp->getPassword(), NULL, 0, true );
- login.show();
- if ( QDialog::Accepted == login.exec() ) {
- // ok
- user = strdup( login.getUser().latin1() );
- pass = strdup( login.getPassword().latin1() );
- } else {
- result = 0; goto free_con_session;
- }
- } else {
- user = strdup( smtp->getUser().latin1() );
- pass = strdup( smtp->getPassword().latin1() );
- }
- qDebug( "session->auth: %i", session->auth);
- err = mailsmtp_auth( session, user, pass );
- if ( err == MAILSMTP_NO_ERROR ) qDebug("auth ok");
- qDebug( "Done auth!" );
- }
-
- err = mailsmtp_send( session, from, rcpts, data, size );
- if ( err != MAILSMTP_NO_ERROR ) {
- qDebug("Error sending mail: %s",mailsmtpError(err).latin1());
- result = 0; goto free_con_session;
- }
-
- qDebug( "Mail sent." );
- storeMail(data,size,"Sent");
-
-free_con_session:
- mailsmtp_quit( session );
-free_mem_session:
- mailsmtp_free( session );
-free_mem:
- if (server) free( server );
- if ( smtp->getLogin() ) {
- free( user );
- free( pass );
- }
- return result;
-}
-
-void SMTPwrapper::sendMail(const Mail&mail,SMTPaccount*aSmtp,bool later )
-{
- mailmime * mimeMail;
-
- SMTPaccount *smtp = aSmtp;
-
- if (!later && !smtp) {
- qDebug("Didn't get any send method - giving up");
- return;
- }
- mimeMail = createMimeMail(mail );
- if ( mimeMail == NULL ) {
- qDebug( "sendMail: error creating mime mail" );
- } else {
- sendProgress = new progressMailSend();
- sendProgress->show();
- sendProgress->setMaxMails(1);
- smtpSend( mimeMail,later,smtp);
- qDebug("Clean up done");
- sendProgress->hide();
- delete sendProgress;
- sendProgress = 0;
- mailmime_free( mimeMail );
- }
-}
-
-int SMTPwrapper::sendQueuedMail(MBOXwrapper*wrap,SMTPaccount*smtp,RecMail*which)
-{
- char*data = 0;
- size_t length = 0;
- size_t curTok = 0;
- mailimf_fields *fields = 0;
- mailimf_field*ffrom = 0;
- clist *rcpts = 0;
- char*from = 0;
- int res = 0;
-
- wrap->fetchRawBody(*which,&data,&length);
- if (!data) return 0;
- int err = mailimf_fields_parse( data, length, &curTok, &fields );
- if (err != MAILIMF_NO_ERROR) {
- free(data);
- delete wrap;
- return 0;
- }
-
- rcpts = createRcptList( fields );
- ffrom = getField(fields, MAILIMF_FIELD_FROM );
- from = getFrom(ffrom);
-
- qDebug("Size: %i vs. %i",length,strlen(data));
- if (rcpts && from) {
- res = smtpSend(from,rcpts,data,length,smtp );
- }
- if (fields) {
- mailimf_fields_free(fields);
- fields = 0;
- }
- if (data) {
- free(data);
- }
- if (from) {
- free(from);
- }
- if (rcpts) {
- smtp_address_list_free( rcpts );
- }
- return res;
-}
-
-/* this is a special fun */
-bool SMTPwrapper::flushOutbox(SMTPaccount*smtp)
-{
- bool returnValue = true;
-
- if (!smtp) return false;
-
- QString localfolders = (QString) getenv( "HOME" ) + QString("/Applications/opiemail/localmail/");
- MBOXwrapper*wrap = new MBOXwrapper(localfolders);
- if (!wrap) {
- qDebug("memory error");
- return false;
- }
- QList<RecMail> mailsToSend;
- QList<RecMail> mailsToRemove;
- QString mbox("Outgoing");
- wrap->listMessages(mbox,mailsToSend);
- if (mailsToSend.count()==0) {
- delete wrap;
- return false;
- }
- mailsToSend.setAutoDelete(false);
- sendProgress = new progressMailSend();
- sendProgress->show();
- sendProgress->setMaxMails(mailsToSend.count());
-
- while (mailsToSend.count()>0) {
- if (sendQueuedMail(wrap,smtp,mailsToSend.at(0))==0) {
- QMessageBox::critical(0,tr("Error sending mail"),
- tr("Error sending queued mail - breaking"));
- returnValue = false;
- break;
- }
- mailsToRemove.append(mailsToSend.at(0));
- mailsToSend.removeFirst();
- sendProgress->setCurrentMails(mailsToRemove.count());
- }
- Config cfg( "mail" );
- cfg.setGroup( "Status" );
- m_queuedMail = 0;
- cfg.writeEntry( "outgoing", m_queuedMail );
- emit queuedMails( m_queuedMail );
- sendProgress->hide();
- delete sendProgress;
- sendProgress = 0;
- wrap->deleteMails(mbox,mailsToRemove);
- mailsToSend.setAutoDelete(true);
- delete wrap;
- return returnValue;
-}