summaryrefslogtreecommitdiffabout
path: root/kmicromail/libmailwrapper/smtpwrapper.cpp
Unidiff
Diffstat (limited to 'kmicromail/libmailwrapper/smtpwrapper.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/libmailwrapper/smtpwrapper.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/kmicromail/libmailwrapper/smtpwrapper.cpp b/kmicromail/libmailwrapper/smtpwrapper.cpp
index 845c71c..448a2e9 100644
--- a/kmicromail/libmailwrapper/smtpwrapper.cpp
+++ b/kmicromail/libmailwrapper/smtpwrapper.cpp
@@ -185,96 +185,99 @@ int SMTPwrapper::start_smtp_tls()
185 return MAILSMTP_ERROR_IN_PROCESSING; 185 return MAILSMTP_ERROR_IN_PROCESSING;
186 } 186 }
187 return err; 187 return err;
188} 188}
189 189
190void SMTPwrapper::connect_server() 190void SMTPwrapper::connect_server()
191{ 191{
192 QString server, user, pass; 192 QString server, user, pass;
193 bool ssl; 193 bool ssl;
194 uint16_t port; 194 uint16_t port;
195 ssl = false; 195 ssl = false;
196 bool try_tls = false; 196 bool try_tls = false;
197 bool force_tls=false; 197 bool force_tls=false;
198 QString failuretext = ""; 198 QString failuretext = "";
199 199
200 if (m_smtp || !m_SmtpAccount) { 200 if (m_smtp || !m_SmtpAccount) {
201 return; 201 return;
202 } 202 }
203 server = m_SmtpAccount->getServer(); 203 server = m_SmtpAccount->getServer();
204 if ( m_SmtpAccount->ConnectionType() == 3 ) { 204 if ( m_SmtpAccount->ConnectionType() == 3 ) {
205 ssl = true; 205 ssl = true;
206 try_tls = false; 206 try_tls = false;
207 } else if (m_SmtpAccount->ConnectionType() == 2) { 207 } else if (m_SmtpAccount->ConnectionType() == 2) {
208 force_tls = true; 208 force_tls = true;
209 try_tls = true;
209 } else if (m_SmtpAccount->ConnectionType() == 1) { 210 } else if (m_SmtpAccount->ConnectionType() == 1) {
210 try_tls = true; 211 try_tls = true;
211 } 212 }
212 int result = 1; 213 int result = 1;
213 port = m_SmtpAccount->getPort().toUInt(); 214 port = m_SmtpAccount->getPort().toUInt();
214 215
215 m_smtp = mailsmtp_new( 20, &progress ); 216 m_smtp = mailsmtp_new( 20, &progress );
216 if ( m_smtp == NULL ) { 217 if ( m_smtp == NULL ) {
217 /* no failure message cause this happens when problems with memory - than we 218 /* no failure message cause this happens when problems with memory - than we
218 we can not display any messagebox */ 219 we can not display any messagebox */
219 return; 220 return;
220 } 221 }
221 222
222 int err = MAILSMTP_NO_ERROR; 223 int err = MAILSMTP_NO_ERROR;
223 ; // odebug << "Servername " << server << " at port " << port << "" << oendl; 224 ; // odebug << "Servername " << server << " at port " << port << "" << oendl;
224 if ( ssl ) { 225 if ( ssl ) {
225 qDebug("smtp: ssl_connect "); 226 qDebug("smtp: ssl_connect ");
226 err = mailsmtp_ssl_connect( m_smtp, server.latin1(), port ); 227 err = mailsmtp_ssl_connect( m_smtp, server.latin1(), port );
227 } else { 228 } else {
228 ; // odebug << "No SSL session" << oendl; 229 ; // odebug << "No SSL session" << oendl;
229 err = mailsmtp_socket_connect( m_smtp, server.latin1(), port ); 230 err = mailsmtp_socket_connect( m_smtp, server.latin1(), port );
230 } 231 }
231 if ( err != MAILSMTP_NO_ERROR ) { 232 if ( err != MAILSMTP_NO_ERROR ) {
232 qDebug("Error init SMTP connection" ); 233 qDebug("Error init SMTP connection" );
233 failuretext = i18n("Error init SMTP connection:\n%1").arg(mailsmtpError(err)); 234 failuretext = i18n("Error init SMTP connection:\n%1").arg(mailsmtpError(err));
234 result = 0; 235 result = 0;
235 } 236 }
236 237
237 qDebug("SMTP connection inited "); 238 qDebug("SMTP connection inited ");
238 /* switch to tls after init 'cause there it will send the ehlo */ 239 /* switch to tls after init 'cause there it will send the ehlo */
239 if (result) { 240 if (result) {
240 err = mailsmtp_init( m_smtp ); 241 err = mailsmtp_init( m_smtp );
241 if (err != MAILSMTP_NO_ERROR) { 242 if (err != MAILSMTP_NO_ERROR) {
242 result = 0; 243 result = 0;
243 qDebug("Error init SMTP connection "); 244 qDebug("Error init SMTP connection ");
244 failuretext = i18n("Error init SMTP connection:\n%1").arg(mailsmtpError(err)); 245 failuretext = i18n("Error init SMTP connection:\n%1").arg(mailsmtpError(err));
245 } 246 }
246 } 247 }
247 if (result && try_tls) { 248 if (result && try_tls) {
248 qDebug("Smpt: Try tls "); 249 qDebug("Smpt: Try TLS... ");
249 err = start_smtp_tls(); 250 err = start_smtp_tls();
250 if (err != MAILSMTP_NO_ERROR) { 251 if (err != MAILSMTP_NO_ERROR) {
251 try_tls = false; 252 try_tls = false;
252 qDebug("no tls "); 253 qDebug("Smpt: No TLS possible ");
253 } else { 254 } else {
254 err = mailesmtp_ehlo(m_smtp); 255 err = mailesmtp_ehlo(m_smtp);
255 if ( err != MAILSMTP_NO_ERROR ) 256 if ( err != MAILSMTP_NO_ERROR )
256 result = 0; 257 result = 0;
258 else
259 qDebug("Smpt: Using TLS ");
257 } 260 }
258 } 261 }
259 //qDebug("mailesmtp_ehlo %d ",err ); 262 //qDebug("mailesmtp_ehlo %d ",err );
260 if (!try_tls && force_tls) { 263 if (!try_tls && force_tls) {
261 result = 0; 264 result = 0;
262 failuretext = i18n("Error init SMTP tls:%1").arg(mailsmtpError(err)); 265 failuretext = i18n("Error init SMTP tls:%1").arg(mailsmtpError(err));
263 } 266 }
264 267
265 if (result==1 && m_SmtpAccount->getLogin() ) { 268 if (result==1 && m_SmtpAccount->getLogin() ) {
266 ; // odebug << "smtp with auth" << oendl; 269 ; // odebug << "smtp with auth" << oendl;
267 if ( m_SmtpAccount->getUser().isEmpty() || m_SmtpAccount->getPassword().isEmpty() ) { 270 if ( m_SmtpAccount->getUser().isEmpty() || m_SmtpAccount->getPassword().isEmpty() ) {
268 // get'em 271 // get'em
269 LoginDialog login( m_SmtpAccount->getUser(), 272 LoginDialog login( m_SmtpAccount->getUser(),
270 m_SmtpAccount->getPassword(), NULL, 0, true ); 273 m_SmtpAccount->getPassword(), NULL, 0, true );
271 login.show(); 274 login.show();
272 if ( QDialog::Accepted == login.exec() ) { 275 if ( QDialog::Accepted == login.exec() ) {
273 // ok 276 // ok
274 user = login.getUser(); 277 user = login.getUser();
275 pass = login.getPassword(); 278 pass = login.getPassword();
276 } else { 279 } else {
277 result = 0; 280 result = 0;
278 failuretext=i18n("Login aborted - \nstoring mail to localfolder"); 281 failuretext=i18n("Login aborted - \nstoring mail to localfolder");
279 } 282 }
280 } else { 283 } else {