Diffstat (limited to 'noncore/net/mail/libmailwrapper/mboxwrapper.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/net/mail/libmailwrapper/mboxwrapper.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
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 @@ -214,6 +214,72 @@ void MBOXwrapper::storeMessage(const char*msg,size_t length, const QString&folde r = mailmbox_append_message(f,msg,length); if (r != MAIL_NO_ERROR) { qDebug("Error writing message folder"); } 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<RecMail> &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); +} + |