From 127c50cc446de489c702400ebc5fc4874f6311b2 Mon Sep 17 00:00:00 2001 From: alwin Date: Tue, 23 Dec 2003 01:58:59 +0000 Subject: UFFFFFFF flushing send queue mostly finished. Attention: To get it work you must apply the patches from the libetpan/ directory! ToDo: - when flush then select a smtp-account to use for when there are more than one smtp accounts. (opiemail.cpp) This moment I just use the first one. - the special funs in mboxwrapper (deleting range of mail, storing a message to a folder) should go to all mailbox wrappers, means into the global interface of them. - cleanup/review the code of the smtp-wrapper. --- (limited to 'noncore/net/mail/libmailwrapper/mboxwrapper.cpp') diff --git a/noncore/net/mail/libmailwrapper/mboxwrapper.cpp b/noncore/net/mail/libmailwrapper/mboxwrapper.cpp index 8117cef..293ae1b 100644 --- a/noncore/net/mail/libmailwrapper/mboxwrapper.cpp +++ b/noncore/net/mail/libmailwrapper/mboxwrapper.cpp @@ -217,3 +217,69 @@ void MBOXwrapper::storeMessage(const char*msg,size_t length, const QString&folde } mailmbox_done(f); } + +void MBOXwrapper::fetchRawBody(const RecMail&mail,char**target,size_t*length) +{ + RecBody body; + mailstorage*storage = mailstorage_new(NULL); + QString p = MBOXPath+"/"; + p+=mail.getMbox(); + mailmessage * msg; + char*data=0; + size_t size; + + int r = mbox_mailstorage_init(storage,strdup(p.latin1()),0,0,0); + mailfolder*folder; + folder = mailfolder_new( storage,strdup(p.latin1()),NULL); + r = mailfolder_connect(folder); + if (r != MAIL_NO_ERROR) { + qDebug("Error initializing mbox"); + mailfolder_free(folder); + mailstorage_free(storage); + return; + } + r = mailsession_get_message(folder->fld_session, mail.getNumber(), &msg); + if (r != MAIL_NO_ERROR) { + qDebug("Error fetching mail %i",mail.getNumber()); + mailfolder_free(folder); + mailstorage_free(storage); + return; + } + r = mailmessage_fetch(msg,&data,&size); + if (r != MAIL_NO_ERROR) { + qDebug("Error fetching mail %i",mail.getNumber()); + mailfolder_free(folder); + mailstorage_free(storage); + mailmessage_free(msg); + return; + } + *target = data; + *length = size; + mailfolder_free(folder); + mailstorage_free(storage); + mailmessage_free(msg); +} + +void MBOXwrapper::deleteMails(const QString & mailbox,QList &target) +{ + QString p = MBOXPath+"/"; + p+=mailbox; + mailmbox_folder*f = 0; + int r = mailmbox_init(p.latin1(),0,1,0,&f); + if (r != MAIL_NO_ERROR) { + qDebug("Error init folder"); + return; + } + for (unsigned int i=0; i < target.count();++i) { + r = mailmbox_delete_msg(f,target.at(i)->getNumber()); + if (r!=MAILMBOX_NO_ERROR) { + qDebug("error delete mail"); + } + } + r = mailmbox_expunge(f); + if (r != MAILMBOX_NO_ERROR) { + qDebug("error expunge mailbox"); + } + mailmbox_done(f); +} + -- cgit v0.9.0.2