Diffstat (limited to 'noncore/net/mail/libmailwrapper/mboxwrapper.cpp') (more/less context) (ignore 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 | |||
@@ -196,24 +196,90 @@ void MBOXwrapper::mbox_progress( size_t current, size_t maximum ) | |||
196 | { | 196 | { |
197 | qDebug("MBOX %i von %i",current,maximum); | 197 | qDebug("MBOX %i von %i",current,maximum); |
198 | } | 198 | } |
199 | 199 | ||
200 | void MBOXwrapper::createFolder(const QString&) | 200 | void MBOXwrapper::createFolder(const QString&) |
201 | { | 201 | { |
202 | } | 202 | } |
203 | 203 | ||
204 | void MBOXwrapper::storeMessage(const char*msg,size_t length, const QString&folder) | 204 | void MBOXwrapper::storeMessage(const char*msg,size_t length, const QString&folder) |
205 | { | 205 | { |
206 | QString p = MBOXPath+"/"; | 206 | QString p = MBOXPath+"/"; |
207 | p+=folder; | 207 | p+=folder; |
208 | mailmbox_folder*f = 0; | 208 | mailmbox_folder*f = 0; |
209 | int r = mailmbox_init(p.latin1(),0,1,0,&f); | 209 | int r = mailmbox_init(p.latin1(),0,1,0,&f); |
210 | if (r != MAIL_NO_ERROR) { | 210 | if (r != MAIL_NO_ERROR) { |
211 | qDebug("Error init folder"); | 211 | qDebug("Error init folder"); |
212 | return; | 212 | return; |
213 | } | 213 | } |
214 | r = mailmbox_append_message(f,msg,length); | 214 | r = mailmbox_append_message(f,msg,length); |
215 | if (r != MAIL_NO_ERROR) { | 215 | if (r != MAIL_NO_ERROR) { |
216 | qDebug("Error writing message folder"); | 216 | qDebug("Error writing message folder"); |
217 | } | 217 | } |
218 | mailmbox_done(f); | 218 | mailmbox_done(f); |
219 | } | 219 | } |
220 | |||
221 | void MBOXwrapper::fetchRawBody(const RecMail&mail,char**target,size_t*length) | ||
222 | { | ||
223 | RecBody body; | ||
224 | mailstorage*storage = mailstorage_new(NULL); | ||
225 | QString p = MBOXPath+"/"; | ||
226 | p+=mail.getMbox(); | ||
227 | mailmessage * msg; | ||
228 | char*data=0; | ||
229 | size_t size; | ||
230 | |||
231 | int r = mbox_mailstorage_init(storage,strdup(p.latin1()),0,0,0); | ||
232 | mailfolder*folder; | ||
233 | folder = mailfolder_new( storage,strdup(p.latin1()),NULL); | ||
234 | r = mailfolder_connect(folder); | ||
235 | if (r != MAIL_NO_ERROR) { | ||
236 | qDebug("Error initializing mbox"); | ||
237 | mailfolder_free(folder); | ||
238 | mailstorage_free(storage); | ||
239 | return; | ||
240 | } | ||
241 | r = mailsession_get_message(folder->fld_session, mail.getNumber(), &msg); | ||
242 | if (r != MAIL_NO_ERROR) { | ||
243 | qDebug("Error fetching mail %i",mail.getNumber()); | ||
244 | mailfolder_free(folder); | ||
245 | mailstorage_free(storage); | ||
246 | return; | ||
247 | } | ||
248 | r = mailmessage_fetch(msg,&data,&size); | ||
249 | if (r != MAIL_NO_ERROR) { | ||
250 | qDebug("Error fetching mail %i",mail.getNumber()); | ||
251 | mailfolder_free(folder); | ||
252 | mailstorage_free(storage); | ||
253 | mailmessage_free(msg); | ||
254 | return; | ||
255 | } | ||
256 | *target = data; | ||
257 | *length = size; | ||
258 | mailfolder_free(folder); | ||
259 | mailstorage_free(storage); | ||
260 | mailmessage_free(msg); | ||
261 | } | ||
262 | |||
263 | void MBOXwrapper::deleteMails(const QString & mailbox,QList<RecMail> &target) | ||
264 | { | ||
265 | QString p = MBOXPath+"/"; | ||
266 | p+=mailbox; | ||
267 | mailmbox_folder*f = 0; | ||
268 | int r = mailmbox_init(p.latin1(),0,1,0,&f); | ||
269 | if (r != MAIL_NO_ERROR) { | ||
270 | qDebug("Error init folder"); | ||
271 | return; | ||
272 | } | ||
273 | for (unsigned int i=0; i < target.count();++i) { | ||
274 | r = mailmbox_delete_msg(f,target.at(i)->getNumber()); | ||
275 | if (r!=MAILMBOX_NO_ERROR) { | ||
276 | qDebug("error delete mail"); | ||
277 | } | ||
278 | } | ||
279 | r = mailmbox_expunge(f); | ||
280 | if (r != MAILMBOX_NO_ERROR) { | ||
281 | qDebug("error expunge mailbox"); | ||
282 | } | ||
283 | mailmbox_done(f); | ||
284 | } | ||
285 | |||