-rw-r--r-- | noncore/net/mail/libmailwrapper/pop3wrapper.cpp | 50 | ||||
-rw-r--r-- | noncore/net/mail/pop3wrapper.cpp | 50 |
2 files changed, 78 insertions, 22 deletions
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp index 2411399..b4a8f4b 100644 --- a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp +++ b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp | |||
@@ -18,3 +18,3 @@ void POP3wrapper::pop3_progress( size_t current, size_t maximum ) | |||
18 | { | 18 | { |
19 | qDebug( "POP3: %i of %i", current, maximum ); | 19 | //qDebug( "POP3: %i of %i", current, maximum ); |
20 | } | 20 | } |
@@ -25,3 +25,3 @@ RecBody POP3wrapper::fetchBody( const RecMail &mail ) | |||
25 | char *message; | 25 | char *message; |
26 | size_t length; | 26 | size_t length = 0; |
27 | 27 | ||
@@ -33,3 +33,2 @@ RecBody POP3wrapper::fetchBody( const RecMail &mail ) | |||
33 | qDebug( "POP3: error retrieving body with index %i", mail.getNumber() ); | 33 | qDebug( "POP3: error retrieving body with index %i", mail.getNumber() ); |
34 | logout(); | ||
35 | return RecBody(); | 34 | return RecBody(); |
@@ -37,4 +36,2 @@ RecBody POP3wrapper::fetchBody( const RecMail &mail ) | |||
37 | 36 | ||
38 | logout(); | ||
39 | |||
40 | return parseBody( message ); | 37 | return parseBody( message ); |
@@ -77,6 +74,5 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target ) | |||
77 | 74 | ||
78 | //for ( int i = carray_count( messages ); i > 0; i-- ) { | ||
79 | for (unsigned int i = 0; i < carray_count(messages);++i) { | 75 | for (unsigned int i = 0; i < carray_count(messages);++i) { |
80 | mailpop3_msg_info *info; | 76 | mailpop3_msg_info *info; |
81 | int r = mailpop3_get_msg_info(m_pop3,i+1,&info); | 77 | err = mailpop3_get_msg_info(m_pop3,i+1,&info); |
82 | err = mailpop3_header( m_pop3, info->msg_index, &header, &length ); | 78 | err = mailpop3_header( m_pop3, info->msg_index, &header, &length ); |
@@ -85,3 +81,2 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target ) | |||
85 | free(header); | 81 | free(header); |
86 | logout(); | ||
87 | return; | 82 | return; |
@@ -91,2 +86,3 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target ) | |||
91 | mail->setWrapper(this); | 86 | mail->setWrapper(this); |
87 | mail->setMsgsize(info->msg_size); | ||
92 | target.append( mail ); | 88 | target.append( mail ); |
@@ -94,3 +90,2 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target ) | |||
94 | } | 90 | } |
95 | logout(); | ||
96 | } | 91 | } |
@@ -105,2 +100,5 @@ RecMail *POP3wrapper::parseHeader( const char *header ) | |||
105 | mailimf_keywords*keys; | 100 | mailimf_keywords*keys; |
101 | QString status; | ||
102 | QString value; | ||
103 | QBitArray mFlags(7); | ||
106 | 104 | ||
@@ -144,3 +142,22 @@ RecMail *POP3wrapper::parseHeader( const char *header ) | |||
144 | break; | 142 | break; |
143 | case MAILIMF_FIELD_OPTIONAL_FIELD: | ||
144 | status = field->fld_data.fld_optional_field->fld_name; | ||
145 | value = field->fld_data.fld_optional_field->fld_value; | ||
146 | if (status.lower()=="status") { | ||
147 | if (value.lower()=="ro") { | ||
148 | mFlags.setBit(FLAG_SEEN); | ||
149 | } | ||
150 | } else if (status.lower()=="x-status") { | ||
151 | qDebug("X-Status: %s",value.latin1()); | ||
152 | if (value.lower()=="a") { | ||
153 | |||
154 | mFlags.setBit(FLAG_ANSWERED); | ||
155 | } | ||
156 | } else { | ||
157 | // qDebug("Optionales feld: %s -> %s)",field->fld_data.fld_optional_field->fld_name, | ||
158 | // field->fld_data.fld_optional_field->fld_value); | ||
159 | } | ||
160 | break; | ||
145 | default: | 161 | default: |
162 | qDebug("Non parsed field"); | ||
146 | break; | 163 | break; |
@@ -149,2 +166,3 @@ RecMail *POP3wrapper::parseHeader( const char *header ) | |||
149 | if (fields) mailimf_fields_free(fields); | 166 | if (fields) mailimf_fields_free(fields); |
167 | mail->setFlags(mFlags); | ||
150 | return mail; | 168 | return mail; |
@@ -246,3 +264,4 @@ void POP3wrapper::login() | |||
246 | { | 264 | { |
247 | if ( m_pop3 != NULL ) logout(); | 265 | /* we'll hold the line */ |
266 | if ( m_pop3 != NULL ) return; | ||
248 | 267 | ||
@@ -299,2 +318,5 @@ QList<Folder>* POP3wrapper::listFolders() | |||
299 | { | 318 | { |
319 | /* TODO: integrate MH directories | ||
320 | but not vor version 0.1 ;) | ||
321 | */ | ||
300 | QList<Folder> * folders = new QList<Folder>(); | 322 | QList<Folder> * folders = new QList<Folder>(); |
@@ -311,4 +333,10 @@ QString POP3wrapper::fetchPart(const RecMail&,const RecPart&) | |||
311 | 333 | ||
312 | void POP3wrapper::deleteMail(const RecMail&) | 334 | void POP3wrapper::deleteMail(const RecMail&mail) |
313 | { | 335 | { |
336 | login(); | ||
337 | if (!m_pop3) return; | ||
338 | int err = mailpop3_dele(m_pop3,mail.getNumber()); | ||
339 | if (err != MAILPOP3_NO_ERROR) { | ||
340 | qDebug("error deleting mail"); | ||
341 | } | ||
314 | } | 342 | } |
diff --git a/noncore/net/mail/pop3wrapper.cpp b/noncore/net/mail/pop3wrapper.cpp index 2411399..b4a8f4b 100644 --- a/noncore/net/mail/pop3wrapper.cpp +++ b/noncore/net/mail/pop3wrapper.cpp | |||
@@ -18,3 +18,3 @@ void POP3wrapper::pop3_progress( size_t current, size_t maximum ) | |||
18 | { | 18 | { |
19 | qDebug( "POP3: %i of %i", current, maximum ); | 19 | //qDebug( "POP3: %i of %i", current, maximum ); |
20 | } | 20 | } |
@@ -25,3 +25,3 @@ RecBody POP3wrapper::fetchBody( const RecMail &mail ) | |||
25 | char *message; | 25 | char *message; |
26 | size_t length; | 26 | size_t length = 0; |
27 | 27 | ||
@@ -33,3 +33,2 @@ RecBody POP3wrapper::fetchBody( const RecMail &mail ) | |||
33 | qDebug( "POP3: error retrieving body with index %i", mail.getNumber() ); | 33 | qDebug( "POP3: error retrieving body with index %i", mail.getNumber() ); |
34 | logout(); | ||
35 | return RecBody(); | 34 | return RecBody(); |
@@ -37,4 +36,2 @@ RecBody POP3wrapper::fetchBody( const RecMail &mail ) | |||
37 | 36 | ||
38 | logout(); | ||
39 | |||
40 | return parseBody( message ); | 37 | return parseBody( message ); |
@@ -77,6 +74,5 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target ) | |||
77 | 74 | ||
78 | //for ( int i = carray_count( messages ); i > 0; i-- ) { | ||
79 | for (unsigned int i = 0; i < carray_count(messages);++i) { | 75 | for (unsigned int i = 0; i < carray_count(messages);++i) { |
80 | mailpop3_msg_info *info; | 76 | mailpop3_msg_info *info; |
81 | int r = mailpop3_get_msg_info(m_pop3,i+1,&info); | 77 | err = mailpop3_get_msg_info(m_pop3,i+1,&info); |
82 | err = mailpop3_header( m_pop3, info->msg_index, &header, &length ); | 78 | err = mailpop3_header( m_pop3, info->msg_index, &header, &length ); |
@@ -85,3 +81,2 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target ) | |||
85 | free(header); | 81 | free(header); |
86 | logout(); | ||
87 | return; | 82 | return; |
@@ -91,2 +86,3 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target ) | |||
91 | mail->setWrapper(this); | 86 | mail->setWrapper(this); |
87 | mail->setMsgsize(info->msg_size); | ||
92 | target.append( mail ); | 88 | target.append( mail ); |
@@ -94,3 +90,2 @@ void POP3wrapper::listMessages(const QString &, QList<RecMail> &target ) | |||
94 | } | 90 | } |
95 | logout(); | ||
96 | } | 91 | } |
@@ -105,2 +100,5 @@ RecMail *POP3wrapper::parseHeader( const char *header ) | |||
105 | mailimf_keywords*keys; | 100 | mailimf_keywords*keys; |
101 | QString status; | ||
102 | QString value; | ||
103 | QBitArray mFlags(7); | ||
106 | 104 | ||
@@ -144,3 +142,22 @@ RecMail *POP3wrapper::parseHeader( const char *header ) | |||
144 | break; | 142 | break; |
143 | case MAILIMF_FIELD_OPTIONAL_FIELD: | ||
144 | status = field->fld_data.fld_optional_field->fld_name; | ||
145 | value = field->fld_data.fld_optional_field->fld_value; | ||
146 | if (status.lower()=="status") { | ||
147 | if (value.lower()=="ro") { | ||
148 | mFlags.setBit(FLAG_SEEN); | ||
149 | } | ||
150 | } else if (status.lower()=="x-status") { | ||
151 | qDebug("X-Status: %s",value.latin1()); | ||
152 | if (value.lower()=="a") { | ||
153 | |||
154 | mFlags.setBit(FLAG_ANSWERED); | ||
155 | } | ||
156 | } else { | ||
157 | // qDebug("Optionales feld: %s -> %s)",field->fld_data.fld_optional_field->fld_name, | ||
158 | // field->fld_data.fld_optional_field->fld_value); | ||
159 | } | ||
160 | break; | ||
145 | default: | 161 | default: |
162 | qDebug("Non parsed field"); | ||
146 | break; | 163 | break; |
@@ -149,2 +166,3 @@ RecMail *POP3wrapper::parseHeader( const char *header ) | |||
149 | if (fields) mailimf_fields_free(fields); | 166 | if (fields) mailimf_fields_free(fields); |
167 | mail->setFlags(mFlags); | ||
150 | return mail; | 168 | return mail; |
@@ -246,3 +264,4 @@ void POP3wrapper::login() | |||
246 | { | 264 | { |
247 | if ( m_pop3 != NULL ) logout(); | 265 | /* we'll hold the line */ |
266 | if ( m_pop3 != NULL ) return; | ||
248 | 267 | ||
@@ -299,2 +318,5 @@ QList<Folder>* POP3wrapper::listFolders() | |||
299 | { | 318 | { |
319 | /* TODO: integrate MH directories | ||
320 | but not vor version 0.1 ;) | ||
321 | */ | ||
300 | QList<Folder> * folders = new QList<Folder>(); | 322 | QList<Folder> * folders = new QList<Folder>(); |
@@ -311,4 +333,10 @@ QString POP3wrapper::fetchPart(const RecMail&,const RecPart&) | |||
311 | 333 | ||
312 | void POP3wrapper::deleteMail(const RecMail&) | 334 | void POP3wrapper::deleteMail(const RecMail&mail) |
313 | { | 335 | { |
336 | login(); | ||
337 | if (!m_pop3) return; | ||
338 | int err = mailpop3_dele(m_pop3,mail.getNumber()); | ||
339 | if (err != MAILPOP3_NO_ERROR) { | ||
340 | qDebug("error deleting mail"); | ||
341 | } | ||
314 | } | 342 | } |