00001 #include "storemail.h" 00002 #include "mailwrapper.h" 00003 #include "settings.h" 00004 #include "abstractmail.h" 00005 00006 #include <libetpan/libetpan.h> 00007 #include <opie2/odebug.h> 00008 #include <qstring.h> 00009 00010 #include <stdlib.h> 00011 00012 using namespace Opie::Core; 00013 Storemail::Storemail(Account*aAccount,const QString&aFolder) 00014 : Generatemail() 00015 { 00016 wrapper = 0; 00017 m_Account = aAccount; 00018 m_tfolder = aFolder; 00019 wrapper = AbstractMail::getWrapper(m_Account); 00020 if (wrapper) { 00021 wrapper->createMbox(m_tfolder); 00022 } 00023 } 00024 00025 Storemail::Storemail(const QString&dir,const QString&aFolder) 00026 : Generatemail() 00027 { 00028 wrapper = 0; 00029 m_Account = 0; 00030 m_tfolder = aFolder; 00031 wrapper = AbstractMail::getWrapper(dir); 00032 if (wrapper) { 00033 wrapper->createMbox(m_tfolder); 00034 } 00035 } 00036 00037 Storemail::Storemail(const QString&aFolder) 00038 : Generatemail() 00039 { 00040 wrapper = 0; 00041 m_Account = 0; 00042 m_tfolder = aFolder; 00043 wrapper = AbstractMail::getWrapper(AbstractMail::defaultLocalfolder()); 00044 if (wrapper) { 00045 wrapper->createMbox(m_tfolder); 00046 } 00047 } 00048 00049 Storemail::~Storemail() 00050 { 00051 } 00052 00053 int Storemail::storeMail(const Opie::Core::OSmartPointer<Mail>&mail) 00054 { 00055 if (!wrapper) return 0; 00056 int ret = 1; 00057 00058 mailmime * mimeMail = 0; 00059 mimeMail = createMimeMail(mail ); 00060 if ( mimeMail == NULL ) { 00061 odebug << "storeMail: error creating mime mail" << oendl; 00062 return 0; 00063 } 00064 char *data; 00065 size_t size; 00066 data = 0; 00067 00068 mailmessage * msg = 0; 00069 msg = mime_message_init(mimeMail); 00070 mime_message_set_tmpdir(msg,getenv( "HOME" )); 00071 int r = mailmessage_fetch(msg,&data,&size); 00072 mime_message_detach_mime(msg); 00073 mailmessage_free(msg); 00074 msg = 0; 00075 if (r != MAIL_NO_ERROR || !data) { 00076 odebug << "Error fetching mime..." << oendl; 00077 ret = 0; 00078 } 00079 00080 if (ret) { 00081 wrapper->storeMessage(data,size,m_tfolder); 00082 } 00083 00084 if (data) { 00085 free(data); 00086 } 00087 if (mimeMail) { 00088 mailmime_free( mimeMail ); 00089 } 00090 return ret; 00091 }
1.4.2