author | harlekin <harlekin> | 2003-12-08 16:57:54 (UTC) |
---|---|---|
committer | harlekin <harlekin> | 2003-12-08 16:57:54 (UTC) |
commit | 57bc0542cae3d106194c9318612fde304e8acfa7 (patch) (unidiff) | |
tree | e0cb233b51302ad2401534ee221cd16fc99d4817 /noncore/net | |
parent | e7b8b190e8c3081d20e33c512224f9a5b5baa20c (diff) | |
download | opie-57bc0542cae3d106194c9318612fde304e8acfa7.zip opie-57bc0542cae3d106194c9318612fde304e8acfa7.tar.gz opie-57bc0542cae3d106194c9318612fde304e8acfa7.tar.bz2 |
no idea how to comment that change
-rw-r--r-- | noncore/net/mail/libmailwrapper/mailwrapper.cpp | 156 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/mailwrapper.h | 12 | ||||
-rw-r--r-- | noncore/net/mail/mail.pro | 1 | ||||
-rw-r--r-- | noncore/net/mail/mailwrapper.cpp | 156 | ||||
-rw-r--r-- | noncore/net/mail/mailwrapper.h | 12 |
5 files changed, 168 insertions, 169 deletions
diff --git a/noncore/net/mail/libmailwrapper/mailwrapper.cpp b/noncore/net/mail/libmailwrapper/mailwrapper.cpp index 17bed65..13a3fd9 100644 --- a/noncore/net/mail/libmailwrapper/mailwrapper.cpp +++ b/noncore/net/mail/libmailwrapper/mailwrapper.cpp | |||
@@ -10,21 +10,21 @@ | |||
10 | 10 | ||
11 | #include "mailwrapper.h" | 11 | #include "mailwrapper.h" |
12 | #include "logindialog.h" | 12 | #include "logindialog.h" |
13 | #include "mail.h" | 13 | //#include "mail.h" |
14 | #include "defines.h" | 14 | #include "defines.h" |
15 | 15 | ||
16 | Attachment::Attachment( DocLnk lnk ) | 16 | Attachment::Attachment( DocLnk lnk ) |
17 | { | 17 | { |
18 | doc = lnk; | 18 | doc = lnk; |
19 | size = QFileInfo( doc.file() ).size(); | 19 | size = QFileInfo( doc.file() ).size(); |
20 | } | 20 | } |
21 | 21 | ||
22 | Folder::Folder(const QString&tmp_name ) | 22 | Folder::Folder(const QString&tmp_name ) |
23 | { | 23 | { |
24 | name = tmp_name; | 24 | name = tmp_name; |
25 | nameDisplay = name; | 25 | nameDisplay = name; |
26 | 26 | ||
27 | for ( int pos = nameDisplay.find( '&' ); pos != -1; | 27 | for ( int pos = nameDisplay.find( '&' ); pos != -1; |
28 | pos = nameDisplay.find( '&' ) ) { | 28 | pos = nameDisplay.find( '&' ) ) { |
29 | int end = nameDisplay.find( '-' ); | 29 | int end = nameDisplay.find( '-' ); |
30 | if ( end == -1 || end <= pos ) break; | 30 | if ( end == -1 || end <= pos ) break; |
@@ -32,7 +32,7 @@ Folder::Folder(const QString&tmp_name ) | |||
32 | // TODO: do real base64 decoding here ! | 32 | // TODO: do real base64 decoding here ! |
33 | if ( str64.compare( "APw" ) == 0 ) { | 33 | if ( str64.compare( "APw" ) == 0 ) { |
34 | nameDisplay = nameDisplay.replace( pos, end - pos + 1, "ue" ); | 34 | nameDisplay = nameDisplay.replace( pos, end - pos + 1, "ue" ); |
35 | } else if ( str64.compare( "APY" ) == 0 ) { | 35 | } else if ( str64.compare( "APY" ) == 0 ) { |
36 | nameDisplay = nameDisplay.replace( pos, end - pos + 1, "oe" ); | 36 | nameDisplay = nameDisplay.replace( pos, end - pos + 1, "oe" ); |
37 | } | 37 | } |
38 | } | 38 | } |
@@ -90,18 +90,18 @@ QString MailWrapper::mailsmtpError( int errnum ) | |||
90 | 90 | ||
91 | mailimf_mailbox *MailWrapper::newMailbox(const QString&name, const QString&mail ) | 91 | mailimf_mailbox *MailWrapper::newMailbox(const QString&name, const QString&mail ) |
92 | { | 92 | { |
93 | return mailimf_mailbox_new( strdup( name.latin1() ), | 93 | return mailimf_mailbox_new( strdup( name.latin1() ), |
94 | strdup( mail.latin1() ) ); | 94 | strdup( mail.latin1() ) ); |
95 | } | 95 | } |
96 | 96 | ||
97 | mailimf_address_list *MailWrapper::parseAddresses(const QString&addr ) | 97 | mailimf_address_list *MailWrapper::parseAddresses(const QString&addr ) |
98 | { | 98 | { |
99 | mailimf_address_list *addresses; | 99 | mailimf_address_list *addresses; |
100 | 100 | ||
101 | if ( addr.isEmpty() ) return NULL; | 101 | if ( addr.isEmpty() ) return NULL; |
102 | 102 | ||
103 | addresses = mailimf_address_list_new_empty(); | 103 | addresses = mailimf_address_list_new_empty(); |
104 | 104 | ||
105 | QStringList list = QStringList::split( ',', addr ); | 105 | QStringList list = QStringList::split( ',', addr ); |
106 | QStringList::Iterator it; | 106 | QStringList::Iterator it; |
107 | for ( it = list.begin(); it != list.end(); it++ ) { | 107 | for ( it = list.begin(); it != list.end(); it++ ) { |
@@ -115,7 +115,7 @@ mailimf_address_list *MailWrapper::parseAddresses(const QString&addr ) | |||
115 | qDebug( "Parse success! :)" ); | 115 | qDebug( "Parse success! :)" ); |
116 | } | 116 | } |
117 | } | 117 | } |
118 | 118 | ||
119 | return addresses; | 119 | return addresses; |
120 | } | 120 | } |
121 | 121 | ||
@@ -128,19 +128,19 @@ mailimf_fields *MailWrapper::createImfFields( Mail *mail ) | |||
128 | mailimf_address_list *to, *cc, *bcc, *reply; | 128 | mailimf_address_list *to, *cc, *bcc, *reply; |
129 | char *subject = strdup( mail->getSubject().latin1() ); | 129 | char *subject = strdup( mail->getSubject().latin1() ); |
130 | int err; | 130 | int err; |
131 | 131 | ||
132 | sender = newMailbox( mail->getName(), mail->getMail() ); | 132 | sender = newMailbox( mail->getName(), mail->getMail() ); |
133 | if ( sender == NULL ) goto err_free; | 133 | if ( sender == NULL ) goto err_free; |
134 | 134 | ||
135 | fromBox = newMailbox( mail->getName(), mail->getMail() ); | 135 | fromBox = newMailbox( mail->getName(), mail->getMail() ); |
136 | if ( fromBox == NULL ) goto err_free_sender; | 136 | if ( fromBox == NULL ) goto err_free_sender; |
137 | 137 | ||
138 | from = mailimf_mailbox_list_new_empty(); | 138 | from = mailimf_mailbox_list_new_empty(); |
139 | if ( from == NULL ) goto err_free_fromBox; | 139 | if ( from == NULL ) goto err_free_fromBox; |
140 | 140 | ||
141 | err = mailimf_mailbox_list_add( from, fromBox ); | 141 | err = mailimf_mailbox_list_add( from, fromBox ); |
142 | if ( err != MAILIMF_NO_ERROR ) goto err_free_from; | 142 | if ( err != MAILIMF_NO_ERROR ) goto err_free_from; |
143 | 143 | ||
144 | to = parseAddresses( mail->getTo() ); | 144 | to = parseAddresses( mail->getTo() ); |
145 | if ( to == NULL ) goto err_free_from; | 145 | if ( to == NULL ) goto err_free_from; |
146 | 146 | ||
@@ -151,14 +151,14 @@ mailimf_fields *MailWrapper::createImfFields( Mail *mail ) | |||
151 | fields = mailimf_fields_new_with_data( from, sender, reply, to, cc, bcc, | 151 | fields = mailimf_fields_new_with_data( from, sender, reply, to, cc, bcc, |
152 | NULL, NULL, subject ); | 152 | NULL, NULL, subject ); |
153 | if ( fields == NULL ) goto err_free_reply; | 153 | if ( fields == NULL ) goto err_free_reply; |
154 | 154 | ||
155 | xmailer = mailimf_field_new_custom( strdup( "User-Agent" ), | 155 | xmailer = mailimf_field_new_custom( strdup( "User-Agent" ), |
156 | strdup( USER_AGENT ) ); | 156 | strdup( USER_AGENT ) ); |
157 | if ( xmailer == NULL ) goto err_free_fields; | 157 | if ( xmailer == NULL ) goto err_free_fields; |
158 | 158 | ||
159 | err = mailimf_fields_add( fields, xmailer ); | 159 | err = mailimf_fields_add( fields, xmailer ); |
160 | if ( err != MAILIMF_NO_ERROR ) goto err_free_xmailer; | 160 | if ( err != MAILIMF_NO_ERROR ) goto err_free_xmailer; |
161 | 161 | ||
162 | return fields; // Success :) | 162 | return fields; // Success :) |
163 | 163 | ||
164 | err_free_xmailer: | 164 | err_free_xmailer: |
@@ -191,40 +191,40 @@ mailmime *MailWrapper::buildTxtPart( QString str ) | |||
191 | mailmime_parameter *param; | 191 | mailmime_parameter *param; |
192 | char *txt = strdup( str.latin1() ); | 192 | char *txt = strdup( str.latin1() ); |
193 | int err; | 193 | int err; |
194 | 194 | ||
195 | param = mailmime_parameter_new( strdup( "charset" ), | 195 | param = mailmime_parameter_new( strdup( "charset" ), |
196 | strdup( "iso-8859-1" ) ); | 196 | strdup( "iso-8859-1" ) ); |
197 | if ( param == NULL ) goto err_free; | 197 | if ( param == NULL ) goto err_free; |
198 | 198 | ||
199 | content = mailmime_content_new_with_str( "text/plain" ); | 199 | content = mailmime_content_new_with_str( "text/plain" ); |
200 | if ( content == NULL ) goto err_free_param; | 200 | if ( content == NULL ) goto err_free_param; |
201 | 201 | ||
202 | err = clist_append( content->parameters, param ); | 202 | err = clist_append( content->parameters, param ); |
203 | if ( err != MAILIMF_NO_ERROR ) goto err_free_content; | 203 | if ( err != MAILIMF_NO_ERROR ) goto err_free_content; |
204 | 204 | ||
205 | fields = mailmime_fields_new_encoding( MAILMIME_MECHANISM_8BIT ); | 205 | fields = mailmime_fields_new_encoding( MAILMIME_MECHANISM_8BIT ); |
206 | if ( fields == NULL ) goto err_free_content; | 206 | if ( fields == NULL ) goto err_free_content; |
207 | 207 | ||
208 | txtPart = mailmime_new_empty( content, fields ); | 208 | txtPart = mailmime_new_empty( content, fields ); |
209 | if ( txtPart == NULL ) goto err_free_fields; | 209 | if ( txtPart == NULL ) goto err_free_fields; |
210 | 210 | ||
211 | err = mailmime_set_body_text( txtPart, txt, strlen( txt ) ); | 211 | err = mailmime_set_body_text( txtPart, txt, strlen( txt ) ); |
212 | if ( err != MAILIMF_NO_ERROR ) goto err_free_txtPart; | 212 | if ( err != MAILIMF_NO_ERROR ) goto err_free_txtPart; |
213 | 213 | ||
214 | return txtPart; // Success :) | 214 | return txtPart; // Success :) |
215 | 215 | ||
216 | err_free_txtPart: | 216 | err_free_txtPart: |
217 | mailmime_free( txtPart ); | 217 | mailmime_free( txtPart ); |
218 | err_free_fields: | 218 | err_free_fields: |
219 | mailmime_fields_free( fields ); | 219 | mailmime_fields_free( fields ); |
220 | err_free_content: | 220 | err_free_content: |
221 | mailmime_content_free( content ); | 221 | mailmime_content_free( content ); |
222 | err_free_param: | 222 | err_free_param: |
223 | mailmime_parameter_free( param ); | 223 | mailmime_parameter_free( param ); |
224 | err_free: | 224 | err_free: |
225 | free( txt ); | 225 | free( txt ); |
226 | qDebug( "buildTxtPart - error" ); | 226 | qDebug( "buildTxtPart - error" ); |
227 | 227 | ||
228 | return NULL; // Error :( | 228 | return NULL; // Error :( |
229 | } | 229 | } |
230 | 230 | ||
@@ -235,36 +235,36 @@ mailmime *MailWrapper::buildFilePart( QString filename, QString mimetype ) | |||
235 | mailmime_content * content; | 235 | mailmime_content * content; |
236 | mailmime_parameter * param = NULL; | 236 | mailmime_parameter * param = NULL; |
237 | int err; | 237 | int err; |
238 | 238 | ||
239 | int pos = filename.findRev( '/' ); | 239 | int pos = filename.findRev( '/' ); |
240 | QString tmp = filename.right( filename.length() - ( pos + 1 ) ); | 240 | QString tmp = filename.right( filename.length() - ( pos + 1 ) ); |
241 | char *name = strdup( tmp.latin1() ); // just filename | 241 | char *name = strdup( tmp.latin1() ); // just filename |
242 | char *file = strdup( filename.latin1() ); // full name with path | 242 | char *file = strdup( filename.latin1() ); // full name with path |
243 | char *mime = strdup( mimetype.latin1() ); // mimetype -e.g. text/plain | 243 | char *mime = strdup( mimetype.latin1() ); // mimetype -e.g. text/plain |
244 | 244 | ||
245 | fields = mailmime_fields_new_filename( | 245 | fields = mailmime_fields_new_filename( |
246 | MAILMIME_DISPOSITION_TYPE_ATTACHMENT, name, | 246 | MAILMIME_DISPOSITION_TYPE_ATTACHMENT, name, |
247 | MAILMIME_MECHANISM_BASE64 ); | 247 | MAILMIME_MECHANISM_BASE64 ); |
248 | if ( fields == NULL ) goto err_free; | 248 | if ( fields == NULL ) goto err_free; |
249 | 249 | ||
250 | content = mailmime_content_new_with_str( mime ); | 250 | content = mailmime_content_new_with_str( mime ); |
251 | if ( content == NULL ) goto err_free_fields; | 251 | if ( content == NULL ) goto err_free_fields; |
252 | 252 | ||
253 | if ( mimetype.compare( "text/plain" ) == 0 ) { | 253 | if ( mimetype.compare( "text/plain" ) == 0 ) { |
254 | param = mailmime_parameter_new( strdup( "charset" ), | 254 | param = mailmime_parameter_new( strdup( "charset" ), |
255 | strdup( "iso-8859-1" ) ); | 255 | strdup( "iso-8859-1" ) ); |
256 | if ( param == NULL ) goto err_free_content; | 256 | if ( param == NULL ) goto err_free_content; |
257 | 257 | ||
258 | err = clist_append( content->parameters, param ); | 258 | err = clist_append( content->parameters, param ); |
259 | if ( err != MAILIMF_NO_ERROR ) goto err_free_param; | 259 | if ( err != MAILIMF_NO_ERROR ) goto err_free_param; |
260 | } | 260 | } |
261 | 261 | ||
262 | filePart = mailmime_new_empty( content, fields ); | 262 | filePart = mailmime_new_empty( content, fields ); |
263 | if ( filePart == NULL ) goto err_free_param; | 263 | if ( filePart == NULL ) goto err_free_param; |
264 | 264 | ||
265 | err = mailmime_set_body_file( filePart, file ); | 265 | err = mailmime_set_body_file( filePart, file ); |
266 | if ( err != MAILIMF_NO_ERROR ) goto err_free_filePart; | 266 | if ( err != MAILIMF_NO_ERROR ) goto err_free_filePart; |
267 | 267 | ||
268 | return filePart; // Success :) | 268 | return filePart; // Success :) |
269 | 269 | ||
270 | err_free_filePart: | 270 | err_free_filePart: |
@@ -280,7 +280,7 @@ err_free: | |||
280 | free( mime ); | 280 | free( mime ); |
281 | free( file ); | 281 | free( file ); |
282 | qDebug( "buildFilePart - error" ); | 282 | qDebug( "buildFilePart - error" ); |
283 | 283 | ||
284 | return NULL; // Error :( | 284 | return NULL; // Error :( |
285 | } | 285 | } |
286 | 286 | ||
@@ -289,17 +289,17 @@ void MailWrapper::addFileParts( mailmime *message, QList<Attachment> files ) | |||
289 | Attachment *it; | 289 | Attachment *it; |
290 | for ( it = files.first(); it; it = files.next() ) { | 290 | for ( it = files.first(); it; it = files.next() ) { |
291 | qDebug( "Adding file" ); | 291 | qDebug( "Adding file" ); |
292 | mailmime *filePart; | 292 | mailmime *filePart; |
293 | int err; | 293 | int err; |
294 | 294 | ||
295 | filePart = buildFilePart( it->getFileName(), it->getMimeType() ); | 295 | filePart = buildFilePart( it->getFileName(), it->getMimeType() ); |
296 | if ( filePart == NULL ) goto err_free; | 296 | if ( filePart == NULL ) goto err_free; |
297 | 297 | ||
298 | err = mailmime_smart_add_part( message, filePart ); | 298 | err = mailmime_smart_add_part( message, filePart ); |
299 | if ( err != MAILIMF_NO_ERROR ) goto err_free_filePart; | 299 | if ( err != MAILIMF_NO_ERROR ) goto err_free_filePart; |
300 | 300 | ||
301 | continue; // Success :) | 301 | continue; // Success :) |
302 | 302 | ||
303 | err_free_filePart: | 303 | err_free_filePart: |
304 | mailmime_free( filePart ); | 304 | mailmime_free( filePart ); |
305 | err_free: | 305 | err_free: |
@@ -316,18 +316,18 @@ mailmime *MailWrapper::createMimeMail( Mail *mail ) | |||
316 | 316 | ||
317 | fields = createImfFields( mail ); | 317 | fields = createImfFields( mail ); |
318 | if ( fields == NULL ) goto err_free; | 318 | if ( fields == NULL ) goto err_free; |
319 | 319 | ||
320 | message = mailmime_new_message_data( NULL ); | 320 | message = mailmime_new_message_data( NULL ); |
321 | if ( message == NULL ) goto err_free_fields; | 321 | if ( message == NULL ) goto err_free_fields; |
322 | 322 | ||
323 | mailmime_set_imf_fields( message, fields ); | 323 | mailmime_set_imf_fields( message, fields ); |
324 | 324 | ||
325 | txtPart = buildTxtPart( mail->getMessage() ); | 325 | txtPart = buildTxtPart( mail->getMessage() ); |
326 | if ( txtPart == NULL ) goto err_free_message; | 326 | if ( txtPart == NULL ) goto err_free_message; |
327 | 327 | ||
328 | err = mailmime_smart_add_part( message, txtPart ); | 328 | err = mailmime_smart_add_part( message, txtPart ); |
329 | if ( err != MAILIMF_NO_ERROR ) goto err_free_txtPart; | 329 | if ( err != MAILIMF_NO_ERROR ) goto err_free_txtPart; |
330 | 330 | ||
331 | addFileParts( message, mail->getAttachments() ); | 331 | addFileParts( message, mail->getAttachments() ); |
332 | 332 | ||
333 | return message; // Success :) | 333 | return message; // Success :) |
@@ -357,18 +357,18 @@ mailimf_field *MailWrapper::getField( mailimf_fields *fields, int type ) | |||
357 | } | 357 | } |
358 | it = it->next; | 358 | it = it->next; |
359 | } | 359 | } |
360 | 360 | ||
361 | return NULL; | 361 | return NULL; |
362 | } | 362 | } |
363 | 363 | ||
364 | static void addRcpts( clist *list, mailimf_address_list *addr_list ) | 364 | static void addRcpts( clist *list, mailimf_address_list *addr_list ) |
365 | { | 365 | { |
366 | clistiter *it, *it2; | 366 | clistiter *it, *it2; |
367 | 367 | ||
368 | for ( it = clist_begin( addr_list->list ); it; it = it->next ) { | 368 | for ( it = clist_begin( addr_list->list ); it; it = it->next ) { |
369 | mailimf_address *addr; | 369 | mailimf_address *addr; |
370 | addr = (mailimf_address *) it->data; | 370 | addr = (mailimf_address *) it->data; |
371 | 371 | ||
372 | if ( addr->type == MAILIMF_ADDRESS_MAILBOX ) { | 372 | if ( addr->type == MAILIMF_ADDRESS_MAILBOX ) { |
373 | esmtp_address_list_add( list, addr->mailbox->addr_spec, 0, NULL ); | 373 | esmtp_address_list_add( list, addr->mailbox->addr_spec, 0, NULL ); |
374 | } else if ( addr->type == MAILIMF_ADDRESS_GROUP ) { | 374 | } else if ( addr->type == MAILIMF_ADDRESS_GROUP ) { |
@@ -388,21 +388,21 @@ clist *MailWrapper::createRcptList( mailimf_fields *fields ) | |||
388 | mailimf_field *field; | 388 | mailimf_field *field; |
389 | 389 | ||
390 | rcptList = esmtp_address_list_new(); | 390 | rcptList = esmtp_address_list_new(); |
391 | 391 | ||
392 | field = getField( fields, MAILIMF_FIELD_TO ); | 392 | field = getField( fields, MAILIMF_FIELD_TO ); |
393 | if ( field && (field->type == MAILIMF_FIELD_TO) | 393 | if ( field && (field->type == MAILIMF_FIELD_TO) |
394 | && field->field.to->addr_list ) { | 394 | && field->field.to->addr_list ) { |
395 | addRcpts( rcptList, field->field.to->addr_list ); | 395 | addRcpts( rcptList, field->field.to->addr_list ); |
396 | } | 396 | } |
397 | 397 | ||
398 | field = getField( fields, MAILIMF_FIELD_CC ); | 398 | field = getField( fields, MAILIMF_FIELD_CC ); |
399 | if ( field && (field->type == MAILIMF_FIELD_CC) | 399 | if ( field && (field->type == MAILIMF_FIELD_CC) |
400 | && field->field.cc->addr_list ) { | 400 | && field->field.cc->addr_list ) { |
401 | addRcpts( rcptList, field->field.cc->addr_list ); | 401 | addRcpts( rcptList, field->field.cc->addr_list ); |
402 | } | 402 | } |
403 | 403 | ||
404 | field = getField( fields, MAILIMF_FIELD_BCC ); | 404 | field = getField( fields, MAILIMF_FIELD_BCC ); |
405 | if ( field && (field->type == MAILIMF_FIELD_BCC) | 405 | if ( field && (field->type == MAILIMF_FIELD_BCC) |
406 | && field->field.bcc->addr_list ) { | 406 | && field->field.bcc->addr_list ) { |
407 | addRcpts( rcptList, field->field.bcc->addr_list ); | 407 | addRcpts( rcptList, field->field.bcc->addr_list ); |
408 | } | 408 | } |
@@ -416,7 +416,7 @@ char *MailWrapper::getFrom( mailmime *mail ) | |||
416 | 416 | ||
417 | mailimf_field *ffrom; | 417 | mailimf_field *ffrom; |
418 | ffrom = getField( mail->fields, MAILIMF_FIELD_FROM ); | 418 | ffrom = getField( mail->fields, MAILIMF_FIELD_FROM ); |
419 | if ( ffrom && (ffrom->type == MAILIMF_FIELD_FROM) | 419 | if ( ffrom && (ffrom->type == MAILIMF_FIELD_FROM) |
420 | && ffrom->field.from->mb_list && ffrom->field.from->mb_list->list ) { | 420 | && ffrom->field.from->mb_list && ffrom->field.from->mb_list->list ) { |
421 | clist *cl = ffrom->field.from->mb_list->list; | 421 | clist *cl = ffrom->field.from->mb_list->list; |
422 | clistiter *it; | 422 | clistiter *it; |
@@ -426,13 +426,13 @@ char *MailWrapper::getFrom( mailmime *mail ) | |||
426 | } | 426 | } |
427 | } | 427 | } |
428 | 428 | ||
429 | return from; | 429 | return from; |
430 | } | 430 | } |
431 | 431 | ||
432 | SMTPaccount *MailWrapper::getAccount( QString from ) | 432 | SMTPaccount *MailWrapper::getAccount( QString from ) |
433 | { | 433 | { |
434 | SMTPaccount *smtp; | 434 | SMTPaccount *smtp; |
435 | 435 | ||
436 | QList<Account> list = settings->getAccounts(); | 436 | QList<Account> list = settings->getAccounts(); |
437 | Account *it; | 437 | Account *it; |
438 | for ( it = list.first(); it; it = list.next() ) { | 438 | for ( it = list.first(); it; it = list.next() ) { |
@@ -445,14 +445,14 @@ SMTPaccount *MailWrapper::getAccount( QString from ) | |||
445 | } | 445 | } |
446 | } | 446 | } |
447 | } | 447 | } |
448 | 448 | ||
449 | return NULL; | 449 | return NULL; |
450 | } | 450 | } |
451 | 451 | ||
452 | QString MailWrapper::getTmpFile() { | 452 | QString MailWrapper::getTmpFile() { |
453 | int num = 0; | 453 | int num = 0; |
454 | QString unique; | 454 | QString unique; |
455 | 455 | ||
456 | QDir dir( "/tmp" ); | 456 | QDir dir( "/tmp" ); |
457 | QStringList::Iterator it; | 457 | QStringList::Iterator it; |
458 | 458 | ||
@@ -460,7 +460,7 @@ QString MailWrapper::getTmpFile() { | |||
460 | do { | 460 | do { |
461 | unique.setNum( num++ ); | 461 | unique.setNum( num++ ); |
462 | } while ( list.contains( "opiemail-tmp-" + unique ) > 0 ); | 462 | } while ( list.contains( "opiemail-tmp-" + unique ) > 0 ); |
463 | 463 | ||
464 | return "/tmp/opiemail-tmp-" + unique; | 464 | return "/tmp/opiemail-tmp-" + unique; |
465 | } | 465 | } |
466 | 466 | ||
@@ -490,13 +490,13 @@ void MailWrapper::readFromFile( QString file, char **data, size_t *size ) | |||
490 | char *buf; | 490 | char *buf; |
491 | struct stat st; | 491 | struct stat st; |
492 | int fd, count = 0, total = 0; | 492 | int fd, count = 0, total = 0; |
493 | 493 | ||
494 | fd = open( file.latin1(), O_RDONLY, 0 ); | 494 | fd = open( file.latin1(), O_RDONLY, 0 ); |
495 | if ( fd == -1 ) return; | 495 | if ( fd == -1 ) return; |
496 | 496 | ||
497 | if ( fstat( fd, &st ) != 0 ) goto err_close; | 497 | if ( fstat( fd, &st ) != 0 ) goto err_close; |
498 | if ( !st.st_size ) goto err_close; | 498 | if ( !st.st_size ) goto err_close; |
499 | 499 | ||
500 | buf = (char *) malloc( st.st_size ); | 500 | buf = (char *) malloc( st.st_size ); |
501 | if ( !buf ) goto err_close; | 501 | if ( !buf ) goto err_close; |
502 | 502 | ||
@@ -508,11 +508,11 @@ void MailWrapper::readFromFile( QString file, char **data, size_t *size ) | |||
508 | 508 | ||
509 | *data = buf; | 509 | *data = buf; |
510 | *size = st.st_size; | 510 | *size = st.st_size; |
511 | 511 | ||
512 | close( fd ); | 512 | close( fd ); |
513 | 513 | ||
514 | return; // Success :) | 514 | return; // Success :) |
515 | 515 | ||
516 | err_free: | 516 | err_free: |
517 | free( buf ); | 517 | free( buf ); |
518 | err_close: | 518 | err_close: |
@@ -533,7 +533,7 @@ void MailWrapper::smtpSend( mailmime *mail ) | |||
533 | int err; | 533 | int err; |
534 | bool ssl; | 534 | bool ssl; |
535 | uint16_t port; | 535 | uint16_t port; |
536 | 536 | ||
537 | 537 | ||
538 | from = getFrom( mail ); | 538 | from = getFrom( mail ); |
539 | SMTPaccount *smtp = getAccount( from ); | 539 | SMTPaccount *smtp = getAccount( from ); |
@@ -551,9 +551,9 @@ void MailWrapper::smtpSend( mailmime *mail ) | |||
551 | readFromFile( file, &data, &size ); | 551 | readFromFile( file, &data, &size ); |
552 | QFile f( file ); | 552 | QFile f( file ); |
553 | f.remove(); | 553 | f.remove(); |
554 | 554 | ||
555 | session = mailsmtp_new( 20, &progress ); | 555 | session = mailsmtp_new( 20, &progress ); |
556 | if ( session == NULL ) goto free_mem; | 556 | if ( session == NULL ) goto free_mem; |
557 | 557 | ||
558 | qDebug( "Servername %s at port %i", server, port ); | 558 | qDebug( "Servername %s at port %i", server, port ); |
559 | if ( ssl ) { | 559 | if ( ssl ) { |
@@ -567,9 +567,9 @@ void MailWrapper::smtpSend( mailmime *mail ) | |||
567 | 567 | ||
568 | err = mailsmtp_init( session ); | 568 | err = mailsmtp_init( session ); |
569 | if ( err != MAILSMTP_NO_ERROR ) goto free_con_session; | 569 | if ( err != MAILSMTP_NO_ERROR ) goto free_con_session; |
570 | 570 | ||
571 | qDebug( "INIT OK" ); | 571 | qDebug( "INIT OK" ); |
572 | 572 | ||
573 | if ( smtp->getLogin() ) { | 573 | if ( smtp->getLogin() ) { |
574 | if ( smtp->getUser().isEmpty() || smtp->getPassword().isEmpty() ) { | 574 | if ( smtp->getUser().isEmpty() || smtp->getPassword().isEmpty() ) { |
575 | // get'em | 575 | // get'em |
@@ -591,12 +591,12 @@ void MailWrapper::smtpSend( mailmime *mail ) | |||
591 | if ( err == MAILSMTP_NO_ERROR ) qDebug("auth ok"); | 591 | if ( err == MAILSMTP_NO_ERROR ) qDebug("auth ok"); |
592 | qDebug( "Done auth!" ); | 592 | qDebug( "Done auth!" ); |
593 | } | 593 | } |
594 | 594 | ||
595 | err = mailsmtp_send( session, from, rcpts, data, size ); | 595 | err = mailsmtp_send( session, from, rcpts, data, size ); |
596 | if ( err != MAILSMTP_NO_ERROR ) goto free_con_session; | 596 | if ( err != MAILSMTP_NO_ERROR ) goto free_con_session; |
597 | 597 | ||
598 | qDebug( "Mail sent." ); | 598 | qDebug( "Mail sent." ); |
599 | 599 | ||
600 | free_con_session: | 600 | free_con_session: |
601 | mailsmtp_quit( session ); | 601 | mailsmtp_quit( session ); |
602 | free_mem_session: | 602 | free_mem_session: |
@@ -622,7 +622,7 @@ void MailWrapper::sendMail( Mail mail ) | |||
622 | } else { | 622 | } else { |
623 | smtpSend( mimeMail ); | 623 | smtpSend( mimeMail ); |
624 | mailmime_free( mimeMail ); | 624 | mailmime_free( mimeMail ); |
625 | } | 625 | } |
626 | } | 626 | } |
627 | 627 | ||
628 | Mail::Mail() | 628 | Mail::Mail() |
diff --git a/noncore/net/mail/libmailwrapper/mailwrapper.h b/noncore/net/mail/libmailwrapper/mailwrapper.h index 3de28a0..f45eab7 100644 --- a/noncore/net/mail/libmailwrapper/mailwrapper.h +++ b/noncore/net/mail/libmailwrapper/mailwrapper.h | |||
@@ -3,12 +3,12 @@ | |||
3 | 3 | ||
4 | #include <qpe/applnk.h> | 4 | #include <qpe/applnk.h> |
5 | 5 | ||
6 | #include <mailmime.h> | 6 | #include <libetpan/mailmime.h> |
7 | #include <mailimf.h> | 7 | #include <libetpan/mailimf.h> |
8 | #include <mailsmtp.h> | 8 | #include <libetpan/mailsmtp.h> |
9 | #include <mailimap.h> | 9 | #include <libetpan/mailimap.h> |
10 | #include <mailstorage.h> | 10 | #include <libetpan/mailstorage.h> |
11 | #include <maildriver.h> | 11 | #include <libetpan/maildriver.h> |
12 | #include <qbitarray.h> | 12 | #include <qbitarray.h> |
13 | #include <qdatetime.h> | 13 | #include <qdatetime.h> |
14 | 14 | ||
diff --git a/noncore/net/mail/mail.pro b/noncore/net/mail/mail.pro index c913826..46a476d 100644 --- a/noncore/net/mail/mail.pro +++ b/noncore/net/mail/mail.pro | |||
@@ -33,7 +33,6 @@ INTERFACES = editaccountsui.ui \ | |||
33 | composemailui.ui | 33 | composemailui.ui |
34 | 34 | ||
35 | INCLUDEPATH += $(OPIEDIR)/include | 35 | INCLUDEPATH += $(OPIEDIR)/include |
36 | INCLUDEPATH += $(OPIEDIR)/include/libetpan | ||
37 | LIBS += -lqpe -lopie -letpan -lssl -lcrypto -ldb | 36 | LIBS += -lqpe -lopie -letpan -lssl -lcrypto -ldb |
38 | TARGET = opiemail | 37 | TARGET = opiemail |
39 | 38 | ||
diff --git a/noncore/net/mail/mailwrapper.cpp b/noncore/net/mail/mailwrapper.cpp index 17bed65..13a3fd9 100644 --- a/noncore/net/mail/mailwrapper.cpp +++ b/noncore/net/mail/mailwrapper.cpp | |||
@@ -10,21 +10,21 @@ | |||
10 | 10 | ||
11 | #include "mailwrapper.h" | 11 | #include "mailwrapper.h" |
12 | #include "logindialog.h" | 12 | #include "logindialog.h" |
13 | #include "mail.h" | 13 | //#include "mail.h" |
14 | #include "defines.h" | 14 | #include "defines.h" |
15 | 15 | ||
16 | Attachment::Attachment( DocLnk lnk ) | 16 | Attachment::Attachment( DocLnk lnk ) |
17 | { | 17 | { |
18 | doc = lnk; | 18 | doc = lnk; |
19 | size = QFileInfo( doc.file() ).size(); | 19 | size = QFileInfo( doc.file() ).size(); |
20 | } | 20 | } |
21 | 21 | ||
22 | Folder::Folder(const QString&tmp_name ) | 22 | Folder::Folder(const QString&tmp_name ) |
23 | { | 23 | { |
24 | name = tmp_name; | 24 | name = tmp_name; |
25 | nameDisplay = name; | 25 | nameDisplay = name; |
26 | 26 | ||
27 | for ( int pos = nameDisplay.find( '&' ); pos != -1; | 27 | for ( int pos = nameDisplay.find( '&' ); pos != -1; |
28 | pos = nameDisplay.find( '&' ) ) { | 28 | pos = nameDisplay.find( '&' ) ) { |
29 | int end = nameDisplay.find( '-' ); | 29 | int end = nameDisplay.find( '-' ); |
30 | if ( end == -1 || end <= pos ) break; | 30 | if ( end == -1 || end <= pos ) break; |
@@ -32,7 +32,7 @@ Folder::Folder(const QString&tmp_name ) | |||
32 | // TODO: do real base64 decoding here ! | 32 | // TODO: do real base64 decoding here ! |
33 | if ( str64.compare( "APw" ) == 0 ) { | 33 | if ( str64.compare( "APw" ) == 0 ) { |
34 | nameDisplay = nameDisplay.replace( pos, end - pos + 1, "ue" ); | 34 | nameDisplay = nameDisplay.replace( pos, end - pos + 1, "ue" ); |
35 | } else if ( str64.compare( "APY" ) == 0 ) { | 35 | } else if ( str64.compare( "APY" ) == 0 ) { |
36 | nameDisplay = nameDisplay.replace( pos, end - pos + 1, "oe" ); | 36 | nameDisplay = nameDisplay.replace( pos, end - pos + 1, "oe" ); |
37 | } | 37 | } |
38 | } | 38 | } |
@@ -90,18 +90,18 @@ QString MailWrapper::mailsmtpError( int errnum ) | |||
90 | 90 | ||
91 | mailimf_mailbox *MailWrapper::newMailbox(const QString&name, const QString&mail ) | 91 | mailimf_mailbox *MailWrapper::newMailbox(const QString&name, const QString&mail ) |
92 | { | 92 | { |
93 | return mailimf_mailbox_new( strdup( name.latin1() ), | 93 | return mailimf_mailbox_new( strdup( name.latin1() ), |
94 | strdup( mail.latin1() ) ); | 94 | strdup( mail.latin1() ) ); |
95 | } | 95 | } |
96 | 96 | ||
97 | mailimf_address_list *MailWrapper::parseAddresses(const QString&addr ) | 97 | mailimf_address_list *MailWrapper::parseAddresses(const QString&addr ) |
98 | { | 98 | { |
99 | mailimf_address_list *addresses; | 99 | mailimf_address_list *addresses; |
100 | 100 | ||
101 | if ( addr.isEmpty() ) return NULL; | 101 | if ( addr.isEmpty() ) return NULL; |
102 | 102 | ||
103 | addresses = mailimf_address_list_new_empty(); | 103 | addresses = mailimf_address_list_new_empty(); |
104 | 104 | ||
105 | QStringList list = QStringList::split( ',', addr ); | 105 | QStringList list = QStringList::split( ',', addr ); |
106 | QStringList::Iterator it; | 106 | QStringList::Iterator it; |
107 | for ( it = list.begin(); it != list.end(); it++ ) { | 107 | for ( it = list.begin(); it != list.end(); it++ ) { |
@@ -115,7 +115,7 @@ mailimf_address_list *MailWrapper::parseAddresses(const QString&addr ) | |||
115 | qDebug( "Parse success! :)" ); | 115 | qDebug( "Parse success! :)" ); |
116 | } | 116 | } |
117 | } | 117 | } |
118 | 118 | ||
119 | return addresses; | 119 | return addresses; |
120 | } | 120 | } |
121 | 121 | ||
@@ -128,19 +128,19 @@ mailimf_fields *MailWrapper::createImfFields( Mail *mail ) | |||
128 | mailimf_address_list *to, *cc, *bcc, *reply; | 128 | mailimf_address_list *to, *cc, *bcc, *reply; |
129 | char *subject = strdup( mail->getSubject().latin1() ); | 129 | char *subject = strdup( mail->getSubject().latin1() ); |
130 | int err; | 130 | int err; |
131 | 131 | ||
132 | sender = newMailbox( mail->getName(), mail->getMail() ); | 132 | sender = newMailbox( mail->getName(), mail->getMail() ); |
133 | if ( sender == NULL ) goto err_free; | 133 | if ( sender == NULL ) goto err_free; |
134 | 134 | ||
135 | fromBox = newMailbox( mail->getName(), mail->getMail() ); | 135 | fromBox = newMailbox( mail->getName(), mail->getMail() ); |
136 | if ( fromBox == NULL ) goto err_free_sender; | 136 | if ( fromBox == NULL ) goto err_free_sender; |
137 | 137 | ||
138 | from = mailimf_mailbox_list_new_empty(); | 138 | from = mailimf_mailbox_list_new_empty(); |
139 | if ( from == NULL ) goto err_free_fromBox; | 139 | if ( from == NULL ) goto err_free_fromBox; |
140 | 140 | ||
141 | err = mailimf_mailbox_list_add( from, fromBox ); | 141 | err = mailimf_mailbox_list_add( from, fromBox ); |
142 | if ( err != MAILIMF_NO_ERROR ) goto err_free_from; | 142 | if ( err != MAILIMF_NO_ERROR ) goto err_free_from; |
143 | 143 | ||
144 | to = parseAddresses( mail->getTo() ); | 144 | to = parseAddresses( mail->getTo() ); |
145 | if ( to == NULL ) goto err_free_from; | 145 | if ( to == NULL ) goto err_free_from; |
146 | 146 | ||
@@ -151,14 +151,14 @@ mailimf_fields *MailWrapper::createImfFields( Mail *mail ) | |||
151 | fields = mailimf_fields_new_with_data( from, sender, reply, to, cc, bcc, | 151 | fields = mailimf_fields_new_with_data( from, sender, reply, to, cc, bcc, |
152 | NULL, NULL, subject ); | 152 | NULL, NULL, subject ); |
153 | if ( fields == NULL ) goto err_free_reply; | 153 | if ( fields == NULL ) goto err_free_reply; |
154 | 154 | ||
155 | xmailer = mailimf_field_new_custom( strdup( "User-Agent" ), | 155 | xmailer = mailimf_field_new_custom( strdup( "User-Agent" ), |
156 | strdup( USER_AGENT ) ); | 156 | strdup( USER_AGENT ) ); |
157 | if ( xmailer == NULL ) goto err_free_fields; | 157 | if ( xmailer == NULL ) goto err_free_fields; |
158 | 158 | ||
159 | err = mailimf_fields_add( fields, xmailer ); | 159 | err = mailimf_fields_add( fields, xmailer ); |
160 | if ( err != MAILIMF_NO_ERROR ) goto err_free_xmailer; | 160 | if ( err != MAILIMF_NO_ERROR ) goto err_free_xmailer; |
161 | 161 | ||
162 | return fields; // Success :) | 162 | return fields; // Success :) |
163 | 163 | ||
164 | err_free_xmailer: | 164 | err_free_xmailer: |
@@ -191,40 +191,40 @@ mailmime *MailWrapper::buildTxtPart( QString str ) | |||
191 | mailmime_parameter *param; | 191 | mailmime_parameter *param; |
192 | char *txt = strdup( str.latin1() ); | 192 | char *txt = strdup( str.latin1() ); |
193 | int err; | 193 | int err; |
194 | 194 | ||
195 | param = mailmime_parameter_new( strdup( "charset" ), | 195 | param = mailmime_parameter_new( strdup( "charset" ), |
196 | strdup( "iso-8859-1" ) ); | 196 | strdup( "iso-8859-1" ) ); |
197 | if ( param == NULL ) goto err_free; | 197 | if ( param == NULL ) goto err_free; |
198 | 198 | ||
199 | content = mailmime_content_new_with_str( "text/plain" ); | 199 | content = mailmime_content_new_with_str( "text/plain" ); |
200 | if ( content == NULL ) goto err_free_param; | 200 | if ( content == NULL ) goto err_free_param; |
201 | 201 | ||
202 | err = clist_append( content->parameters, param ); | 202 | err = clist_append( content->parameters, param ); |
203 | if ( err != MAILIMF_NO_ERROR ) goto err_free_content; | 203 | if ( err != MAILIMF_NO_ERROR ) goto err_free_content; |
204 | 204 | ||
205 | fields = mailmime_fields_new_encoding( MAILMIME_MECHANISM_8BIT ); | 205 | fields = mailmime_fields_new_encoding( MAILMIME_MECHANISM_8BIT ); |
206 | if ( fields == NULL ) goto err_free_content; | 206 | if ( fields == NULL ) goto err_free_content; |
207 | 207 | ||
208 | txtPart = mailmime_new_empty( content, fields ); | 208 | txtPart = mailmime_new_empty( content, fields ); |
209 | if ( txtPart == NULL ) goto err_free_fields; | 209 | if ( txtPart == NULL ) goto err_free_fields; |
210 | 210 | ||
211 | err = mailmime_set_body_text( txtPart, txt, strlen( txt ) ); | 211 | err = mailmime_set_body_text( txtPart, txt, strlen( txt ) ); |
212 | if ( err != MAILIMF_NO_ERROR ) goto err_free_txtPart; | 212 | if ( err != MAILIMF_NO_ERROR ) goto err_free_txtPart; |
213 | 213 | ||
214 | return txtPart; // Success :) | 214 | return txtPart; // Success :) |
215 | 215 | ||
216 | err_free_txtPart: | 216 | err_free_txtPart: |
217 | mailmime_free( txtPart ); | 217 | mailmime_free( txtPart ); |
218 | err_free_fields: | 218 | err_free_fields: |
219 | mailmime_fields_free( fields ); | 219 | mailmime_fields_free( fields ); |
220 | err_free_content: | 220 | err_free_content: |
221 | mailmime_content_free( content ); | 221 | mailmime_content_free( content ); |
222 | err_free_param: | 222 | err_free_param: |
223 | mailmime_parameter_free( param ); | 223 | mailmime_parameter_free( param ); |
224 | err_free: | 224 | err_free: |
225 | free( txt ); | 225 | free( txt ); |
226 | qDebug( "buildTxtPart - error" ); | 226 | qDebug( "buildTxtPart - error" ); |
227 | 227 | ||
228 | return NULL; // Error :( | 228 | return NULL; // Error :( |
229 | } | 229 | } |
230 | 230 | ||
@@ -235,36 +235,36 @@ mailmime *MailWrapper::buildFilePart( QString filename, QString mimetype ) | |||
235 | mailmime_content * content; | 235 | mailmime_content * content; |
236 | mailmime_parameter * param = NULL; | 236 | mailmime_parameter * param = NULL; |
237 | int err; | 237 | int err; |
238 | 238 | ||
239 | int pos = filename.findRev( '/' ); | 239 | int pos = filename.findRev( '/' ); |
240 | QString tmp = filename.right( filename.length() - ( pos + 1 ) ); | 240 | QString tmp = filename.right( filename.length() - ( pos + 1 ) ); |
241 | char *name = strdup( tmp.latin1() ); // just filename | 241 | char *name = strdup( tmp.latin1() ); // just filename |
242 | char *file = strdup( filename.latin1() ); // full name with path | 242 | char *file = strdup( filename.latin1() ); // full name with path |
243 | char *mime = strdup( mimetype.latin1() ); // mimetype -e.g. text/plain | 243 | char *mime = strdup( mimetype.latin1() ); // mimetype -e.g. text/plain |
244 | 244 | ||
245 | fields = mailmime_fields_new_filename( | 245 | fields = mailmime_fields_new_filename( |
246 | MAILMIME_DISPOSITION_TYPE_ATTACHMENT, name, | 246 | MAILMIME_DISPOSITION_TYPE_ATTACHMENT, name, |
247 | MAILMIME_MECHANISM_BASE64 ); | 247 | MAILMIME_MECHANISM_BASE64 ); |
248 | if ( fields == NULL ) goto err_free; | 248 | if ( fields == NULL ) goto err_free; |
249 | 249 | ||
250 | content = mailmime_content_new_with_str( mime ); | 250 | content = mailmime_content_new_with_str( mime ); |
251 | if ( content == NULL ) goto err_free_fields; | 251 | if ( content == NULL ) goto err_free_fields; |
252 | 252 | ||
253 | if ( mimetype.compare( "text/plain" ) == 0 ) { | 253 | if ( mimetype.compare( "text/plain" ) == 0 ) { |
254 | param = mailmime_parameter_new( strdup( "charset" ), | 254 | param = mailmime_parameter_new( strdup( "charset" ), |
255 | strdup( "iso-8859-1" ) ); | 255 | strdup( "iso-8859-1" ) ); |
256 | if ( param == NULL ) goto err_free_content; | 256 | if ( param == NULL ) goto err_free_content; |
257 | 257 | ||
258 | err = clist_append( content->parameters, param ); | 258 | err = clist_append( content->parameters, param ); |
259 | if ( err != MAILIMF_NO_ERROR ) goto err_free_param; | 259 | if ( err != MAILIMF_NO_ERROR ) goto err_free_param; |
260 | } | 260 | } |
261 | 261 | ||
262 | filePart = mailmime_new_empty( content, fields ); | 262 | filePart = mailmime_new_empty( content, fields ); |
263 | if ( filePart == NULL ) goto err_free_param; | 263 | if ( filePart == NULL ) goto err_free_param; |
264 | 264 | ||
265 | err = mailmime_set_body_file( filePart, file ); | 265 | err = mailmime_set_body_file( filePart, file ); |
266 | if ( err != MAILIMF_NO_ERROR ) goto err_free_filePart; | 266 | if ( err != MAILIMF_NO_ERROR ) goto err_free_filePart; |
267 | 267 | ||
268 | return filePart; // Success :) | 268 | return filePart; // Success :) |
269 | 269 | ||
270 | err_free_filePart: | 270 | err_free_filePart: |
@@ -280,7 +280,7 @@ err_free: | |||
280 | free( mime ); | 280 | free( mime ); |
281 | free( file ); | 281 | free( file ); |
282 | qDebug( "buildFilePart - error" ); | 282 | qDebug( "buildFilePart - error" ); |
283 | 283 | ||
284 | return NULL; // Error :( | 284 | return NULL; // Error :( |
285 | } | 285 | } |
286 | 286 | ||
@@ -289,17 +289,17 @@ void MailWrapper::addFileParts( mailmime *message, QList<Attachment> files ) | |||
289 | Attachment *it; | 289 | Attachment *it; |
290 | for ( it = files.first(); it; it = files.next() ) { | 290 | for ( it = files.first(); it; it = files.next() ) { |
291 | qDebug( "Adding file" ); | 291 | qDebug( "Adding file" ); |
292 | mailmime *filePart; | 292 | mailmime *filePart; |
293 | int err; | 293 | int err; |
294 | 294 | ||
295 | filePart = buildFilePart( it->getFileName(), it->getMimeType() ); | 295 | filePart = buildFilePart( it->getFileName(), it->getMimeType() ); |
296 | if ( filePart == NULL ) goto err_free; | 296 | if ( filePart == NULL ) goto err_free; |
297 | 297 | ||
298 | err = mailmime_smart_add_part( message, filePart ); | 298 | err = mailmime_smart_add_part( message, filePart ); |
299 | if ( err != MAILIMF_NO_ERROR ) goto err_free_filePart; | 299 | if ( err != MAILIMF_NO_ERROR ) goto err_free_filePart; |
300 | 300 | ||
301 | continue; // Success :) | 301 | continue; // Success :) |
302 | 302 | ||
303 | err_free_filePart: | 303 | err_free_filePart: |
304 | mailmime_free( filePart ); | 304 | mailmime_free( filePart ); |
305 | err_free: | 305 | err_free: |
@@ -316,18 +316,18 @@ mailmime *MailWrapper::createMimeMail( Mail *mail ) | |||
316 | 316 | ||
317 | fields = createImfFields( mail ); | 317 | fields = createImfFields( mail ); |
318 | if ( fields == NULL ) goto err_free; | 318 | if ( fields == NULL ) goto err_free; |
319 | 319 | ||
320 | message = mailmime_new_message_data( NULL ); | 320 | message = mailmime_new_message_data( NULL ); |
321 | if ( message == NULL ) goto err_free_fields; | 321 | if ( message == NULL ) goto err_free_fields; |
322 | 322 | ||
323 | mailmime_set_imf_fields( message, fields ); | 323 | mailmime_set_imf_fields( message, fields ); |
324 | 324 | ||
325 | txtPart = buildTxtPart( mail->getMessage() ); | 325 | txtPart = buildTxtPart( mail->getMessage() ); |
326 | if ( txtPart == NULL ) goto err_free_message; | 326 | if ( txtPart == NULL ) goto err_free_message; |
327 | 327 | ||
328 | err = mailmime_smart_add_part( message, txtPart ); | 328 | err = mailmime_smart_add_part( message, txtPart ); |
329 | if ( err != MAILIMF_NO_ERROR ) goto err_free_txtPart; | 329 | if ( err != MAILIMF_NO_ERROR ) goto err_free_txtPart; |
330 | 330 | ||
331 | addFileParts( message, mail->getAttachments() ); | 331 | addFileParts( message, mail->getAttachments() ); |
332 | 332 | ||
333 | return message; // Success :) | 333 | return message; // Success :) |
@@ -357,18 +357,18 @@ mailimf_field *MailWrapper::getField( mailimf_fields *fields, int type ) | |||
357 | } | 357 | } |
358 | it = it->next; | 358 | it = it->next; |
359 | } | 359 | } |
360 | 360 | ||
361 | return NULL; | 361 | return NULL; |
362 | } | 362 | } |
363 | 363 | ||
364 | static void addRcpts( clist *list, mailimf_address_list *addr_list ) | 364 | static void addRcpts( clist *list, mailimf_address_list *addr_list ) |
365 | { | 365 | { |
366 | clistiter *it, *it2; | 366 | clistiter *it, *it2; |
367 | 367 | ||
368 | for ( it = clist_begin( addr_list->list ); it; it = it->next ) { | 368 | for ( it = clist_begin( addr_list->list ); it; it = it->next ) { |
369 | mailimf_address *addr; | 369 | mailimf_address *addr; |
370 | addr = (mailimf_address *) it->data; | 370 | addr = (mailimf_address *) it->data; |
371 | 371 | ||
372 | if ( addr->type == MAILIMF_ADDRESS_MAILBOX ) { | 372 | if ( addr->type == MAILIMF_ADDRESS_MAILBOX ) { |
373 | esmtp_address_list_add( list, addr->mailbox->addr_spec, 0, NULL ); | 373 | esmtp_address_list_add( list, addr->mailbox->addr_spec, 0, NULL ); |
374 | } else if ( addr->type == MAILIMF_ADDRESS_GROUP ) { | 374 | } else if ( addr->type == MAILIMF_ADDRESS_GROUP ) { |
@@ -388,21 +388,21 @@ clist *MailWrapper::createRcptList( mailimf_fields *fields ) | |||
388 | mailimf_field *field; | 388 | mailimf_field *field; |
389 | 389 | ||
390 | rcptList = esmtp_address_list_new(); | 390 | rcptList = esmtp_address_list_new(); |
391 | 391 | ||
392 | field = getField( fields, MAILIMF_FIELD_TO ); | 392 | field = getField( fields, MAILIMF_FIELD_TO ); |
393 | if ( field && (field->type == MAILIMF_FIELD_TO) | 393 | if ( field && (field->type == MAILIMF_FIELD_TO) |
394 | && field->field.to->addr_list ) { | 394 | && field->field.to->addr_list ) { |
395 | addRcpts( rcptList, field->field.to->addr_list ); | 395 | addRcpts( rcptList, field->field.to->addr_list ); |
396 | } | 396 | } |
397 | 397 | ||
398 | field = getField( fields, MAILIMF_FIELD_CC ); | 398 | field = getField( fields, MAILIMF_FIELD_CC ); |
399 | if ( field && (field->type == MAILIMF_FIELD_CC) | 399 | if ( field && (field->type == MAILIMF_FIELD_CC) |
400 | && field->field.cc->addr_list ) { | 400 | && field->field.cc->addr_list ) { |
401 | addRcpts( rcptList, field->field.cc->addr_list ); | 401 | addRcpts( rcptList, field->field.cc->addr_list ); |
402 | } | 402 | } |
403 | 403 | ||
404 | field = getField( fields, MAILIMF_FIELD_BCC ); | 404 | field = getField( fields, MAILIMF_FIELD_BCC ); |
405 | if ( field && (field->type == MAILIMF_FIELD_BCC) | 405 | if ( field && (field->type == MAILIMF_FIELD_BCC) |
406 | && field->field.bcc->addr_list ) { | 406 | && field->field.bcc->addr_list ) { |
407 | addRcpts( rcptList, field->field.bcc->addr_list ); | 407 | addRcpts( rcptList, field->field.bcc->addr_list ); |
408 | } | 408 | } |
@@ -416,7 +416,7 @@ char *MailWrapper::getFrom( mailmime *mail ) | |||
416 | 416 | ||
417 | mailimf_field *ffrom; | 417 | mailimf_field *ffrom; |
418 | ffrom = getField( mail->fields, MAILIMF_FIELD_FROM ); | 418 | ffrom = getField( mail->fields, MAILIMF_FIELD_FROM ); |
419 | if ( ffrom && (ffrom->type == MAILIMF_FIELD_FROM) | 419 | if ( ffrom && (ffrom->type == MAILIMF_FIELD_FROM) |
420 | && ffrom->field.from->mb_list && ffrom->field.from->mb_list->list ) { | 420 | && ffrom->field.from->mb_list && ffrom->field.from->mb_list->list ) { |
421 | clist *cl = ffrom->field.from->mb_list->list; | 421 | clist *cl = ffrom->field.from->mb_list->list; |
422 | clistiter *it; | 422 | clistiter *it; |
@@ -426,13 +426,13 @@ char *MailWrapper::getFrom( mailmime *mail ) | |||
426 | } | 426 | } |
427 | } | 427 | } |
428 | 428 | ||
429 | return from; | 429 | return from; |
430 | } | 430 | } |
431 | 431 | ||
432 | SMTPaccount *MailWrapper::getAccount( QString from ) | 432 | SMTPaccount *MailWrapper::getAccount( QString from ) |
433 | { | 433 | { |
434 | SMTPaccount *smtp; | 434 | SMTPaccount *smtp; |
435 | 435 | ||
436 | QList<Account> list = settings->getAccounts(); | 436 | QList<Account> list = settings->getAccounts(); |
437 | Account *it; | 437 | Account *it; |
438 | for ( it = list.first(); it; it = list.next() ) { | 438 | for ( it = list.first(); it; it = list.next() ) { |
@@ -445,14 +445,14 @@ SMTPaccount *MailWrapper::getAccount( QString from ) | |||
445 | } | 445 | } |
446 | } | 446 | } |
447 | } | 447 | } |
448 | 448 | ||
449 | return NULL; | 449 | return NULL; |
450 | } | 450 | } |
451 | 451 | ||
452 | QString MailWrapper::getTmpFile() { | 452 | QString MailWrapper::getTmpFile() { |
453 | int num = 0; | 453 | int num = 0; |
454 | QString unique; | 454 | QString unique; |
455 | 455 | ||
456 | QDir dir( "/tmp" ); | 456 | QDir dir( "/tmp" ); |
457 | QStringList::Iterator it; | 457 | QStringList::Iterator it; |
458 | 458 | ||
@@ -460,7 +460,7 @@ QString MailWrapper::getTmpFile() { | |||
460 | do { | 460 | do { |
461 | unique.setNum( num++ ); | 461 | unique.setNum( num++ ); |
462 | } while ( list.contains( "opiemail-tmp-" + unique ) > 0 ); | 462 | } while ( list.contains( "opiemail-tmp-" + unique ) > 0 ); |
463 | 463 | ||
464 | return "/tmp/opiemail-tmp-" + unique; | 464 | return "/tmp/opiemail-tmp-" + unique; |
465 | } | 465 | } |
466 | 466 | ||
@@ -490,13 +490,13 @@ void MailWrapper::readFromFile( QString file, char **data, size_t *size ) | |||
490 | char *buf; | 490 | char *buf; |
491 | struct stat st; | 491 | struct stat st; |
492 | int fd, count = 0, total = 0; | 492 | int fd, count = 0, total = 0; |
493 | 493 | ||
494 | fd = open( file.latin1(), O_RDONLY, 0 ); | 494 | fd = open( file.latin1(), O_RDONLY, 0 ); |
495 | if ( fd == -1 ) return; | 495 | if ( fd == -1 ) return; |
496 | 496 | ||
497 | if ( fstat( fd, &st ) != 0 ) goto err_close; | 497 | if ( fstat( fd, &st ) != 0 ) goto err_close; |
498 | if ( !st.st_size ) goto err_close; | 498 | if ( !st.st_size ) goto err_close; |
499 | 499 | ||
500 | buf = (char *) malloc( st.st_size ); | 500 | buf = (char *) malloc( st.st_size ); |
501 | if ( !buf ) goto err_close; | 501 | if ( !buf ) goto err_close; |
502 | 502 | ||
@@ -508,11 +508,11 @@ void MailWrapper::readFromFile( QString file, char **data, size_t *size ) | |||
508 | 508 | ||
509 | *data = buf; | 509 | *data = buf; |
510 | *size = st.st_size; | 510 | *size = st.st_size; |
511 | 511 | ||
512 | close( fd ); | 512 | close( fd ); |
513 | 513 | ||
514 | return; // Success :) | 514 | return; // Success :) |
515 | 515 | ||
516 | err_free: | 516 | err_free: |
517 | free( buf ); | 517 | free( buf ); |
518 | err_close: | 518 | err_close: |
@@ -533,7 +533,7 @@ void MailWrapper::smtpSend( mailmime *mail ) | |||
533 | int err; | 533 | int err; |
534 | bool ssl; | 534 | bool ssl; |
535 | uint16_t port; | 535 | uint16_t port; |
536 | 536 | ||
537 | 537 | ||
538 | from = getFrom( mail ); | 538 | from = getFrom( mail ); |
539 | SMTPaccount *smtp = getAccount( from ); | 539 | SMTPaccount *smtp = getAccount( from ); |
@@ -551,9 +551,9 @@ void MailWrapper::smtpSend( mailmime *mail ) | |||
551 | readFromFile( file, &data, &size ); | 551 | readFromFile( file, &data, &size ); |
552 | QFile f( file ); | 552 | QFile f( file ); |
553 | f.remove(); | 553 | f.remove(); |
554 | 554 | ||
555 | session = mailsmtp_new( 20, &progress ); | 555 | session = mailsmtp_new( 20, &progress ); |
556 | if ( session == NULL ) goto free_mem; | 556 | if ( session == NULL ) goto free_mem; |
557 | 557 | ||
558 | qDebug( "Servername %s at port %i", server, port ); | 558 | qDebug( "Servername %s at port %i", server, port ); |
559 | if ( ssl ) { | 559 | if ( ssl ) { |
@@ -567,9 +567,9 @@ void MailWrapper::smtpSend( mailmime *mail ) | |||
567 | 567 | ||
568 | err = mailsmtp_init( session ); | 568 | err = mailsmtp_init( session ); |
569 | if ( err != MAILSMTP_NO_ERROR ) goto free_con_session; | 569 | if ( err != MAILSMTP_NO_ERROR ) goto free_con_session; |
570 | 570 | ||
571 | qDebug( "INIT OK" ); | 571 | qDebug( "INIT OK" ); |
572 | 572 | ||
573 | if ( smtp->getLogin() ) { | 573 | if ( smtp->getLogin() ) { |
574 | if ( smtp->getUser().isEmpty() || smtp->getPassword().isEmpty() ) { | 574 | if ( smtp->getUser().isEmpty() || smtp->getPassword().isEmpty() ) { |
575 | // get'em | 575 | // get'em |
@@ -591,12 +591,12 @@ void MailWrapper::smtpSend( mailmime *mail ) | |||
591 | if ( err == MAILSMTP_NO_ERROR ) qDebug("auth ok"); | 591 | if ( err == MAILSMTP_NO_ERROR ) qDebug("auth ok"); |
592 | qDebug( "Done auth!" ); | 592 | qDebug( "Done auth!" ); |
593 | } | 593 | } |
594 | 594 | ||
595 | err = mailsmtp_send( session, from, rcpts, data, size ); | 595 | err = mailsmtp_send( session, from, rcpts, data, size ); |
596 | if ( err != MAILSMTP_NO_ERROR ) goto free_con_session; | 596 | if ( err != MAILSMTP_NO_ERROR ) goto free_con_session; |
597 | 597 | ||
598 | qDebug( "Mail sent." ); | 598 | qDebug( "Mail sent." ); |
599 | 599 | ||
600 | free_con_session: | 600 | free_con_session: |
601 | mailsmtp_quit( session ); | 601 | mailsmtp_quit( session ); |
602 | free_mem_session: | 602 | free_mem_session: |
@@ -622,7 +622,7 @@ void MailWrapper::sendMail( Mail mail ) | |||
622 | } else { | 622 | } else { |
623 | smtpSend( mimeMail ); | 623 | smtpSend( mimeMail ); |
624 | mailmime_free( mimeMail ); | 624 | mailmime_free( mimeMail ); |
625 | } | 625 | } |
626 | } | 626 | } |
627 | 627 | ||
628 | Mail::Mail() | 628 | Mail::Mail() |
diff --git a/noncore/net/mail/mailwrapper.h b/noncore/net/mail/mailwrapper.h index 3de28a0..f45eab7 100644 --- a/noncore/net/mail/mailwrapper.h +++ b/noncore/net/mail/mailwrapper.h | |||
@@ -3,12 +3,12 @@ | |||
3 | 3 | ||
4 | #include <qpe/applnk.h> | 4 | #include <qpe/applnk.h> |
5 | 5 | ||
6 | #include <mailmime.h> | 6 | #include <libetpan/mailmime.h> |
7 | #include <mailimf.h> | 7 | #include <libetpan/mailimf.h> |
8 | #include <mailsmtp.h> | 8 | #include <libetpan/mailsmtp.h> |
9 | #include <mailimap.h> | 9 | #include <libetpan/mailimap.h> |
10 | #include <mailstorage.h> | 10 | #include <libetpan/mailstorage.h> |
11 | #include <maildriver.h> | 11 | #include <libetpan/maildriver.h> |
12 | #include <qbitarray.h> | 12 | #include <qbitarray.h> |
13 | #include <qdatetime.h> | 13 | #include <qdatetime.h> |
14 | 14 | ||