summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.cpp50
-rw-r--r--noncore/net/mail/pop3wrapper.cpp50
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
312void POP3wrapper::deleteMail(const RecMail&) 334void 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
312void POP3wrapper::deleteMail(const RecMail&) 334void 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}