summaryrefslogtreecommitdiffabout
path: root/kmicromail/libmailwrapper/imapwrapper.cpp
Unidiff
Diffstat (limited to 'kmicromail/libmailwrapper/imapwrapper.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/libmailwrapper/imapwrapper.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/kmicromail/libmailwrapper/imapwrapper.cpp b/kmicromail/libmailwrapper/imapwrapper.cpp
index 93fb7de..09e52b8 100644
--- a/kmicromail/libmailwrapper/imapwrapper.cpp
+++ b/kmicromail/libmailwrapper/imapwrapper.cpp
@@ -120,13 +120,13 @@ bool IMAPwrapper::start_tls(bool force_tls)
120 } 120 }
121 } 121 }
122 } 122 }
123 return try_tls; 123 return try_tls;
124} 124}
125 125
126void IMAPwrapper::login() 126void IMAPwrapper::login(bool tryTLS) // = true)
127{ 127{
128 QString server, user, pass; 128 QString server, user, pass;
129 uint16_t port; 129 uint16_t port;
130 int err = MAILIMAP_NO_ERROR; 130 int err = MAILIMAP_NO_ERROR;
131 131
132 if (account->getOffline()) return; 132 if (account->getOffline()) return;
@@ -192,29 +192,36 @@ void IMAPwrapper::login()
192 } 192 }
193 Global::statusMessage(i18n("error connecting imap server: %1").arg(failure)); 193 Global::statusMessage(i18n("error connecting imap server: %1").arg(failure));
194 mailimap_free( m_imap ); 194 mailimap_free( m_imap );
195 m_imap = 0; 195 m_imap = 0;
196 return; 196 return;
197 } 197 }
198 198 if ( tryTLS ) {
199 if (!ssl) { 199 if (!ssl) {
200 try_tls = start_tls(force_tls); 200 try_tls = start_tls(force_tls);
201 }
201 } 202 }
202
203 bool ok = true; 203 bool ok = true;
204 if (force_tls && !try_tls) { 204 if (force_tls && !try_tls) {
205 Global::statusMessage(i18n("Server has no TLS support!")); 205 Global::statusMessage(i18n("Server has no TLS support!"));
206 ok = false; 206 ok = false;
207 } 207 }
208 208
209 209
210 /* login */ 210 /* login */
211 211
212 if (ok) { 212 if (ok) {
213 err = mailimap_login_simple( m_imap, (char*)user.latin1(), (char*)pass.latin1() ); 213 err = mailimap_login_simple( m_imap, (char*)user.latin1(), (char*)pass.latin1() );
214 if ( err != MAILIMAP_NO_ERROR ) { 214 if ( err != MAILIMAP_NO_ERROR ) {
215 if ( tryTLS && !force_tls && !try_tls ) {
216 err = mailimap_close( m_imap );
217 mailimap_free( m_imap );
218 m_imap = 0;
219 login( false );
220 return;
221 }
215 Global::statusMessage(i18n("error logging in imap server: %1").arg(m_imap->imap_response)); 222 Global::statusMessage(i18n("error logging in imap server: %1").arg(m_imap->imap_response));
216 ok = false; 223 ok = false;
217 } 224 }
218 } 225 }
219 if (!ok) { 226 if (!ok) {
220 err = mailimap_close( m_imap ); 227 err = mailimap_close( m_imap );