summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.h8
-rw-r--r--noncore/net/mail/libmailwrapper/genericwrapper.h3
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.cpp15
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.h3
-rw-r--r--noncore/net/mail/libmailwrapper/libmailwrapper.pro6
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.cpp8
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.h4
7 files changed, 38 insertions, 9 deletions
diff --git a/noncore/net/mail/libmailwrapper/abstractmail.h b/noncore/net/mail/libmailwrapper/abstractmail.h
index ca9caed..a070fb0 100644
--- a/noncore/net/mail/libmailwrapper/abstractmail.h
+++ b/noncore/net/mail/libmailwrapper/abstractmail.h
@@ -30,8 +30,9 @@ public:
virtual void deleteMail(const RecMail&mail)=0;
virtual void answeredMail(const RecMail&mail)=0;
- virtual void cleanMimeCache(){};
- virtual int deleteAllMail(const Folder*){return 1;}
- virtual int deleteMbox(const Folder*){return 1;}
+ virtual int deleteAllMail(const Folder*)=0;
+ virtual int deleteMbox(const Folder*)=0;
+ virtual void storeMessage(const char*msg,size_t length, const QString&folder)=0;
+ virtual void cleanMimeCache(){};
/* mail box methods */
/* parameter is the box to create.
@@ -40,4 +41,5 @@ public:
*/
virtual int createMbox(const QString&,const Folder*parentfolder=0,const QString& delemiter="/",bool getsubfolder=false);
+ virtual void logout()=0;
static AbstractMail* getWrapper(IMAPaccount *a);
diff --git a/noncore/net/mail/libmailwrapper/genericwrapper.h b/noncore/net/mail/libmailwrapper/genericwrapper.h
index 32b75c8..1d65c0a 100644
--- a/noncore/net/mail/libmailwrapper/genericwrapper.h
+++ b/noncore/net/mail/libmailwrapper/genericwrapper.h
@@ -36,4 +36,7 @@ public:
virtual QString fetchTextPart(const RecMail&mail,const RecPart&part);
virtual void cleanMimeCache();
+ virtual int deleteMbox(const Folder*){return 1;}
+ virtual void logout(){};
+ virtual void storeMessage(const char*msg,size_t length, const QString&folder){};
protected:
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.cpp b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
index f1d42c2..0c1e05e 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
@@ -48,6 +48,6 @@ void IMAPwrapper::login()
if ( QDialog::Accepted == login.exec() ) {
// ok
- user = strdup( login.getUser().latin1() );
- pass = strdup( login.getPassword().latin1() );
+ user = login.getUser().latin1();
+ pass = login.getPassword().latin1();
} else {
// cancel
@@ -975,2 +975,13 @@ void IMAPwrapper::statusFolder(folderStat&target_stat,const QString & mailbox)
mailimap_status_att_list_free(att_list);
}
+
+void IMAPwrapper::storeMessage(const char*msg,size_t length, const QString&folder)
+{
+ login();
+ if (!m_imap) return;
+ if (!msg) return;
+ int r = mailimap_append(m_imap,(char*)folder.latin1(),0,0,msg,length);
+ if (r != MAILIMAP_NO_ERROR) {
+ Global::statusMessage("Error storing mail!");
+ }
+}
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.h b/noncore/net/mail/libmailwrapper/imapwrapper.h
index 8f5a2b5..a97f12d 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.h
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.h
@@ -31,4 +31,5 @@ public:
virtual void answeredMail(const RecMail&mail);
virtual int deleteAllMail(const Folder*folder);
+ virtual void storeMessage(const char*msg,size_t length, const QString&folder);
virtual RecBody fetchBody(const RecMail&mail);
@@ -42,8 +43,8 @@ public:
static void imap_progress( size_t current, size_t maximum );
+ virtual void logout();
protected:
RecMail*parse_list_result(mailimap_msg_att*);
void login();
- void logout();
virtual QString fetchTextPart(const RecMail&mail,const QValueList<int>&path,bool internal_call=false,const QString&enc="");
diff --git a/noncore/net/mail/libmailwrapper/libmailwrapper.pro b/noncore/net/mail/libmailwrapper/libmailwrapper.pro
index 4b4a4f1..18583bb 100644
--- a/noncore/net/mail/libmailwrapper/libmailwrapper.pro
+++ b/noncore/net/mail/libmailwrapper/libmailwrapper.pro
@@ -12,5 +12,6 @@ HEADERS = mailwrapper.h \
settings.h \
logindialog.h \
- sendmailprogress.h
+ sendmailprogress.h \
+ statusmail.h
SOURCES = imapwrapper.cpp \
@@ -24,5 +25,6 @@ SOURCES = imapwrapper.cpp \
settings.cpp \
logindialog.cpp \
- sendmailprogress.cpp
+ sendmailprogress.cpp \
+ statusmail.cpp
INTERFACES = logindialogui.ui \
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
index d76d82a..b4eca6f 100644
--- a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
@@ -228,2 +228,10 @@ void POP3wrapper::statusFolder(folderStat&target_stat,const QString&)
&target_stat.message_recent,&target_stat.message_unseen);
}
+
+void POP3wrapper::fetchRawBody(const RecMail&mail,char**target,size_t*length)
+{
+ mailmessage * mailmsg = 0;
+ int err = mailsession_get_message(m_folder->fld_session, mail.getNumber(), &mailmsg);
+ err = mailmessage_fetch(mailmsg,target,length);
+ if (mailmsg) mailmessage_free(mailmsg);
+}
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.h b/noncore/net/mail/libmailwrapper/pop3wrapper.h
index 536cadc..9cba101 100644
--- a/noncore/net/mail/libmailwrapper/pop3wrapper.h
+++ b/noncore/net/mail/libmailwrapper/pop3wrapper.h
@@ -27,9 +27,11 @@ public:
virtual RecBody fetchBody( const RecMail &mail );
+ virtual void fetchRawBody(const RecMail&mail,char**target,size_t*length);
+ virtual void logout();
+
static void pop3_progress( size_t current, size_t maximum );
protected:
void login();
- void logout();
POP3account *account;
mailstorage*m_pop3;