author | harlekin <harlekin> | 2003-12-10 02:02:53 (UTC) |
---|---|---|
committer | harlekin <harlekin> | 2003-12-10 02:02:53 (UTC) |
commit | 1f0b92e554b76852af210ceb277b3e9ecb09a43d (patch) (side-by-side diff) | |
tree | a813761b2f0d1a2b8a9a1a996d6e37d511d24f0f | |
parent | a908d0ffdb5cee72b7823fc411119b8e1e3faad8 (diff) | |
download | opie-1f0b92e554b76852af210ceb277b3e9ecb09a43d.zip opie-1f0b92e554b76852af210ceb277b3e9ecb09a43d.tar.gz opie-1f0b92e554b76852af210ceb277b3e9ecb09a43d.tar.bz2 |
ssl for imap now working
-rw-r--r-- | noncore/net/mail/imapwrapper.cpp | 60 | ||||
-rw-r--r-- | noncore/net/mail/libmailwrapper/imapwrapper.cpp | 60 | ||||
-rw-r--r-- | noncore/net/mail/mainwindow.cpp | 2 |
3 files changed, 67 insertions, 55 deletions
diff --git a/noncore/net/mail/imapwrapper.cpp b/noncore/net/mail/imapwrapper.cpp index eae85a7..dc02780 100644 --- a/noncore/net/mail/imapwrapper.cpp +++ b/noncore/net/mail/imapwrapper.cpp @@ -26,26 +26,32 @@ void IMAPwrapper::login() logout(); const char *server, *user, *pass; uint16_t port; int err = MAILIMAP_NO_ERROR; - + server = account->getServer().latin1(); port = account->getPort().toUInt(); user = account->getUser().latin1(); pass = account->getPassword().latin1(); - - m_imap = mailimap_new( 20, &imap_progress ); + + m_imap = mailimap_new( 20, &imap_progress ); /* connect */ - err = mailimap_socket_connect( m_imap, (char*)server, port ); - if ( err != MAILIMAP_NO_ERROR && + // err = mailimap_socket_connect( m_imap, (char*)server, port ); + if (account->getSSL()) { + err = mailimap_ssl_connect( m_imap, (char*)server, port ); + } else { + err = mailimap_socket_connect( m_imap, (char*)server, port ); + } + + if ( err != MAILIMAP_NO_ERROR && err != MAILIMAP_NO_ERROR_AUTHENTICATED && err != MAILIMAP_NO_ERROR_NON_AUTHENTICATED ) { qDebug("error connecting server: %s",m_imap->response); mailimap_free( m_imap ); m_imap = 0; return; } - + /* login */ err = mailimap_login_simple( m_imap, (char*)user, (char*)pass ); if ( err != MAILIMAP_NO_ERROR ) { qDebug("error logging in imap: %s",m_imap->response); @@ -73,9 +79,9 @@ void IMAPwrapper::listMessages(const QString&mailbox,QList<RecMail> &target ) clistcell *current; mailimap_fetch_att *fetchAtt,*fetchAttFlags,*fetchAttDate; mailimap_fetch_type *fetchType; mailimap_set *set; - + mb = mailbox.latin1(); login(); if (!m_imap) { return; @@ -94,22 +100,22 @@ void IMAPwrapper::listMessages(const QString&mailbox,QList<RecMail> &target ) qDebug("mailbox has no mails"); logout(); return; } - - result = clist_new(); + + result = clist_new(); /* the range has to start at 1!!! not with 0!!!! */ set = mailimap_set_new_interval( 1, last ); fetchAtt = mailimap_fetch_att_new_envelope(); fetchAttFlags = mailimap_fetch_att_new_flags(); fetchAttDate = mailimap_fetch_att_new_internaldate(); - + //fetchType = mailimap_fetch_type_new_fetch_att(fetchAtt); fetchType = mailimap_fetch_type_new_fetch_att_list_empty(); mailimap_fetch_type_new_fetch_att_list_add(fetchType,fetchAtt); mailimap_fetch_type_new_fetch_att_list_add(fetchType,fetchAttFlags); mailimap_fetch_type_new_fetch_att_list_add(fetchType,fetchAttDate); - + err = mailimap_fetch( m_imap, set, fetchType, &result ); mailimap_set_free( set ); /* cleans up the fetch_att's too! */ mailimap_fetch_type_free( fetchType ); @@ -143,16 +149,16 @@ QList<IMAPFolder>* IMAPwrapper::listFolders() const char *path, *mask; int err = MAILIMAP_NO_ERROR; clist *result; clistcell *current; - + QList<IMAPFolder> * folders = new QList<IMAPFolder>(); folders->setAutoDelete( true ); login(); if (!m_imap) { return folders; } - + /* * First we have to check for INBOX 'cause it sometimes it's not inside the path. * We must not forget to filter them out in next loop! * it seems like ugly code. and yes - it is ugly code. but the best way. @@ -175,13 +181,13 @@ QList<IMAPFolder>* IMAPwrapper::listFolders() } else { qDebug("error fetching folders: %s",m_imap->response); } mailimap_list_result_free( result ); - + /* * second stage - get the other then inbox folders */ - mask = "*" ; + mask = "*" ; path = account->getPrefix().latin1(); result = clist_new(); qDebug(path); err = mailimap_list( m_imap, (char*)path, (char*)mask, &result ); @@ -195,9 +201,9 @@ QList<IMAPFolder>* IMAPwrapper::listFolders() current = current->next; if (temp.lower()=="inbox") continue; folders->append(new IMAPFolder(temp)); - + } } else { qDebug("error fetching folders %s",m_imap->response); } @@ -213,9 +219,9 @@ RecMail*IMAPwrapper::parse_list_result(mailimap_msg_att* m_att) mailimap_msg_att_dynamic*flist; mailimap_flag_fetch*cflag; QBitArray mFlags(7); QStringList addresslist; - + if (!m_att) { return m; } @@ -328,11 +334,11 @@ RecBody IMAPwrapper::fetchBody(const RecMail&mail) mailimap_fetch_att *fetchAtt; mailimap_fetch_type *fetchType; mailimap_set *set; mailimap_body*body_desc; - + mb = mail.getMbox().latin1(); - + login(); if (!m_imap) { return body; } @@ -342,12 +348,12 @@ RecBody IMAPwrapper::fetchBody(const RecMail&mail) qDebug("error selecting mailbox: %s",m_imap->response); logout(); return body; } - result = clist_new(); + result = clist_new(); /* the range has to start at 1!!! not with 0!!!! */ set = mailimap_set_new_interval( mail.getNumber(),mail.getNumber() ); - fetchAtt = mailimap_fetch_att_new_body(); + fetchAtt = mailimap_fetch_att_new_body(); fetchType = mailimap_fetch_type_new_fetch_att(fetchAtt); err = mailimap_fetch( m_imap, set, fetchType, &result ); mailimap_set_free( set ); mailimap_fetch_type_free( fetchType ); @@ -360,15 +366,15 @@ RecBody IMAPwrapper::fetchBody(const RecMail&mail) if (body_desc->type==MAILIMAP_BODY_1PART) { searchBodyText(mail,body_desc->body_1part,body); } else { } - + } else { qDebug("error fetching body: %s",m_imap->response); } clist_free(result); - logout(); + logout(); return body; } void IMAPwrapper::searchBodyText(const RecMail&mail,mailimap_body_type_1part*mailDescription,RecBody&target_body) @@ -395,24 +401,24 @@ void IMAPwrapper::fillPlainBody(const RecMail&mail,RecBody&target_body, mailimap clistcell *current; mailimap_fetch_att *fetchAtt; mailimap_fetch_type *fetchType; mailimap_set *set; - + mb = mail.getMbox().latin1(); - + if (!m_imap) { return; } - result = clist_new(); + result = clist_new(); /* the range has to start at 1!!! not with 0!!!! */ set = mailimap_set_new_interval( mail.getNumber(),mail.getNumber() ); fetchAtt = mailimap_fetch_att_new_rfc822_text(); fetchType = mailimap_fetch_type_new_fetch_att(fetchAtt); err = mailimap_fetch( m_imap, set, fetchType, &result ); mailimap_set_free( set ); mailimap_fetch_type_free( fetchType ); - + if (err == MAILIMAP_NO_ERROR && (current=clist_begin(result)) ) { mailimap_msg_att * msg_att; msg_att = (mailimap_msg_att*)current->data; mailimap_msg_att_item*item = (mailimap_msg_att_item*)msg_att->list->first->data; diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.cpp b/noncore/net/mail/libmailwrapper/imapwrapper.cpp index eae85a7..dc02780 100644 --- a/noncore/net/mail/libmailwrapper/imapwrapper.cpp +++ b/noncore/net/mail/libmailwrapper/imapwrapper.cpp @@ -26,26 +26,32 @@ void IMAPwrapper::login() logout(); const char *server, *user, *pass; uint16_t port; int err = MAILIMAP_NO_ERROR; - + server = account->getServer().latin1(); port = account->getPort().toUInt(); user = account->getUser().latin1(); pass = account->getPassword().latin1(); - - m_imap = mailimap_new( 20, &imap_progress ); + + m_imap = mailimap_new( 20, &imap_progress ); /* connect */ - err = mailimap_socket_connect( m_imap, (char*)server, port ); - if ( err != MAILIMAP_NO_ERROR && + // err = mailimap_socket_connect( m_imap, (char*)server, port ); + if (account->getSSL()) { + err = mailimap_ssl_connect( m_imap, (char*)server, port ); + } else { + err = mailimap_socket_connect( m_imap, (char*)server, port ); + } + + if ( err != MAILIMAP_NO_ERROR && err != MAILIMAP_NO_ERROR_AUTHENTICATED && err != MAILIMAP_NO_ERROR_NON_AUTHENTICATED ) { qDebug("error connecting server: %s",m_imap->response); mailimap_free( m_imap ); m_imap = 0; return; } - + /* login */ err = mailimap_login_simple( m_imap, (char*)user, (char*)pass ); if ( err != MAILIMAP_NO_ERROR ) { qDebug("error logging in imap: %s",m_imap->response); @@ -73,9 +79,9 @@ void IMAPwrapper::listMessages(const QString&mailbox,QList<RecMail> &target ) clistcell *current; mailimap_fetch_att *fetchAtt,*fetchAttFlags,*fetchAttDate; mailimap_fetch_type *fetchType; mailimap_set *set; - + mb = mailbox.latin1(); login(); if (!m_imap) { return; @@ -94,22 +100,22 @@ void IMAPwrapper::listMessages(const QString&mailbox,QList<RecMail> &target ) qDebug("mailbox has no mails"); logout(); return; } - - result = clist_new(); + + result = clist_new(); /* the range has to start at 1!!! not with 0!!!! */ set = mailimap_set_new_interval( 1, last ); fetchAtt = mailimap_fetch_att_new_envelope(); fetchAttFlags = mailimap_fetch_att_new_flags(); fetchAttDate = mailimap_fetch_att_new_internaldate(); - + //fetchType = mailimap_fetch_type_new_fetch_att(fetchAtt); fetchType = mailimap_fetch_type_new_fetch_att_list_empty(); mailimap_fetch_type_new_fetch_att_list_add(fetchType,fetchAtt); mailimap_fetch_type_new_fetch_att_list_add(fetchType,fetchAttFlags); mailimap_fetch_type_new_fetch_att_list_add(fetchType,fetchAttDate); - + err = mailimap_fetch( m_imap, set, fetchType, &result ); mailimap_set_free( set ); /* cleans up the fetch_att's too! */ mailimap_fetch_type_free( fetchType ); @@ -143,16 +149,16 @@ QList<IMAPFolder>* IMAPwrapper::listFolders() const char *path, *mask; int err = MAILIMAP_NO_ERROR; clist *result; clistcell *current; - + QList<IMAPFolder> * folders = new QList<IMAPFolder>(); folders->setAutoDelete( true ); login(); if (!m_imap) { return folders; } - + /* * First we have to check for INBOX 'cause it sometimes it's not inside the path. * We must not forget to filter them out in next loop! * it seems like ugly code. and yes - it is ugly code. but the best way. @@ -175,13 +181,13 @@ QList<IMAPFolder>* IMAPwrapper::listFolders() } else { qDebug("error fetching folders: %s",m_imap->response); } mailimap_list_result_free( result ); - + /* * second stage - get the other then inbox folders */ - mask = "*" ; + mask = "*" ; path = account->getPrefix().latin1(); result = clist_new(); qDebug(path); err = mailimap_list( m_imap, (char*)path, (char*)mask, &result ); @@ -195,9 +201,9 @@ QList<IMAPFolder>* IMAPwrapper::listFolders() current = current->next; if (temp.lower()=="inbox") continue; folders->append(new IMAPFolder(temp)); - + } } else { qDebug("error fetching folders %s",m_imap->response); } @@ -213,9 +219,9 @@ RecMail*IMAPwrapper::parse_list_result(mailimap_msg_att* m_att) mailimap_msg_att_dynamic*flist; mailimap_flag_fetch*cflag; QBitArray mFlags(7); QStringList addresslist; - + if (!m_att) { return m; } @@ -328,11 +334,11 @@ RecBody IMAPwrapper::fetchBody(const RecMail&mail) mailimap_fetch_att *fetchAtt; mailimap_fetch_type *fetchType; mailimap_set *set; mailimap_body*body_desc; - + mb = mail.getMbox().latin1(); - + login(); if (!m_imap) { return body; } @@ -342,12 +348,12 @@ RecBody IMAPwrapper::fetchBody(const RecMail&mail) qDebug("error selecting mailbox: %s",m_imap->response); logout(); return body; } - result = clist_new(); + result = clist_new(); /* the range has to start at 1!!! not with 0!!!! */ set = mailimap_set_new_interval( mail.getNumber(),mail.getNumber() ); - fetchAtt = mailimap_fetch_att_new_body(); + fetchAtt = mailimap_fetch_att_new_body(); fetchType = mailimap_fetch_type_new_fetch_att(fetchAtt); err = mailimap_fetch( m_imap, set, fetchType, &result ); mailimap_set_free( set ); mailimap_fetch_type_free( fetchType ); @@ -360,15 +366,15 @@ RecBody IMAPwrapper::fetchBody(const RecMail&mail) if (body_desc->type==MAILIMAP_BODY_1PART) { searchBodyText(mail,body_desc->body_1part,body); } else { } - + } else { qDebug("error fetching body: %s",m_imap->response); } clist_free(result); - logout(); + logout(); return body; } void IMAPwrapper::searchBodyText(const RecMail&mail,mailimap_body_type_1part*mailDescription,RecBody&target_body) @@ -395,24 +401,24 @@ void IMAPwrapper::fillPlainBody(const RecMail&mail,RecBody&target_body, mailimap clistcell *current; mailimap_fetch_att *fetchAtt; mailimap_fetch_type *fetchType; mailimap_set *set; - + mb = mail.getMbox().latin1(); - + if (!m_imap) { return; } - result = clist_new(); + result = clist_new(); /* the range has to start at 1!!! not with 0!!!! */ set = mailimap_set_new_interval( mail.getNumber(),mail.getNumber() ); fetchAtt = mailimap_fetch_att_new_rfc822_text(); fetchType = mailimap_fetch_type_new_fetch_att(fetchAtt); err = mailimap_fetch( m_imap, set, fetchType, &result ); mailimap_set_free( set ); mailimap_fetch_type_free( fetchType ); - + if (err == MAILIMAP_NO_ERROR && (current=clist_begin(result)) ) { mailimap_msg_att * msg_att; msg_att = (mailimap_msg_att*)current->data; mailimap_msg_att_item*item = (mailimap_msg_att_item*)msg_att->list->first->data; diff --git a/noncore/net/mail/mainwindow.cpp b/noncore/net/mail/mainwindow.cpp index 3edfff1..6d13a8b 100644 --- a/noncore/net/mail/mainwindow.cpp +++ b/noncore/net/mail/mainwindow.cpp @@ -14,9 +14,9 @@ MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags ) : QMainWindow( parent, name, flags ) { - setCaption( tr( "Opie-Mail" ) ); + setCaption( tr( "Mail" ) ); setToolBarsMovable( false ); toolBar = new QToolBar( this ); menuBar = new QMenuBar( toolBar ); |