summaryrefslogtreecommitdiff
path: root/noncore
authorharlekin <harlekin>2003-12-10 02:02:53 (UTC)
committer harlekin <harlekin>2003-12-10 02:02:53 (UTC)
commit1f0b92e554b76852af210ceb277b3e9ecb09a43d (patch) (side-by-side diff)
treea813761b2f0d1a2b8a9a1a996d6e37d511d24f0f /noncore
parenta908d0ffdb5cee72b7823fc411119b8e1e3faad8 (diff)
downloadopie-1f0b92e554b76852af210ceb277b3e9ecb09a43d.zip
opie-1f0b92e554b76852af210ceb277b3e9ecb09a43d.tar.gz
opie-1f0b92e554b76852af210ceb277b3e9ecb09a43d.tar.bz2
ssl for imap now working
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/imapwrapper.cpp60
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.cpp60
-rw-r--r--noncore/net/mail/mainwindow.cpp2
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 );