summaryrefslogtreecommitdiffabout
path: root/kmicromail
Unidiff
Diffstat (limited to 'kmicromail') (more/less context) (show whitespace changes)
-rw-r--r--kmicromail/editaccounts.cpp12
-rw-r--r--kmicromail/libmailwrapper/smtpwrapper.cpp17
2 files changed, 25 insertions, 4 deletions
diff --git a/kmicromail/editaccounts.cpp b/kmicromail/editaccounts.cpp
index 49049f6..2c0f2d8 100644
--- a/kmicromail/editaccounts.cpp
+++ b/kmicromail/editaccounts.cpp
@@ -326,57 +326,59 @@ void SelectMailType::slotSelection( const QString &sel )
326 */ 326 */
327 327
328IMAPconfig::IMAPconfig( IMAPaccount *account, QWidget *parent, const char *name, bool modal, WFlags flags ) 328IMAPconfig::IMAPconfig( IMAPaccount *account, QWidget *parent, const char *name, bool modal, WFlags flags )
329 : IMAPconfigUI( parent, name, modal, flags ) 329 : IMAPconfigUI( parent, name, modal, flags )
330{ 330{
331 data = account; 331 data = account;
332 332
333 //fillValues(); 333 //fillValues();
334 334
335 connect( ComboBox1, SIGNAL( activated(int) ), SLOT( slotConnectionToggle(int) ) ); 335 connect( ComboBox1, SIGNAL( activated(int) ), SLOT( slotConnectionToggle(int) ) );
336 ComboBox1->insertItem( "Only if available", 0 ); 336 ComboBox1->insertItem( "Only if available", 0 );
337 ComboBox1->insertItem( "Always, Negotiated", 1 ); 337 ComboBox1->insertItem( "Always, Negotiated", 1 );
338 ComboBox1->insertItem( "Connect on secure port", 2 ); 338 ComboBox1->insertItem( "Connect on secure port", 2 );
339 ComboBox1->insertItem( "Run command instead", 3 ); 339 ComboBox1->insertItem( "Run command instead", 3 );
340 CommandEdit->hide(); 340 CommandEdit->hide();
341 fillValues(); 341 fillValues();
342 // ComboBox1->setCurrentItem( data->ConnectionType() ); 342 // ComboBox1->setCurrentItem( data->ConnectionType() );
343} 343}
344 344
345void IMAPconfig::slotConnectionToggle( int index ) 345void IMAPconfig::slotConnectionToggle( int index )
346{ 346{
347 if ( index == 2 ) 347 if ( index == 2 )
348 { 348 {
349 portLine->setText( IMAP_SSL_PORT ); 349 portLine->setText( IMAP_SSL_PORT );
350 CommandEdit->hide();
350 } 351 }
351 else if ( index == 3 ) 352 else if ( index == 3 )
352 { 353 {
353 portLine->setText( IMAP_PORT ); 354 portLine->setText( IMAP_PORT );
354 CommandEdit->show(); 355 CommandEdit->show();
355 } 356 }
356 else 357 else
357 { 358 {
358 portLine->setText( IMAP_PORT ); 359 portLine->setText( IMAP_PORT );
360 CommandEdit->hide();
359 } 361 }
360} 362}
361 363
362void IMAPconfig::fillValues() 364void IMAPconfig::fillValues()
363{ 365{
364 accountLine->setText( data->getAccountName() ); 366 accountLine->setText( data->getAccountName() );
365 serverLine->setText( data->getServer() ); 367 serverLine->setText( data->getServer() );
366 portLine->setText( data->getPort() ); 368 portLine->setText( data->getPort() );
367 ComboBox1->setCurrentItem( data->ConnectionType() ); 369 ComboBox1->setCurrentItem( data->ConnectionType() );
368 userLine->setText( data->getUser() ); 370 userLine->setText( data->getUser() );
369 passLine->setText( data->getPassword() ); 371 passLine->setText( data->getPassword() );
370 prefixLine->setText(data->getPrefix()); 372 prefixLine->setText(data->getPrefix());
371 localFolder->setText( data->getLocalFolder() ); 373 localFolder->setText( data->getLocalFolder() );
372 int max = data->getMaxMailSize() ; 374 int max = data->getMaxMailSize() ;
373 if ( max ) { 375 if ( max ) {
374 CheckBoxDown->setChecked( true ); 376 CheckBoxDown->setChecked( true );
375 SpinBoxDown->setValue ( max ); 377 SpinBoxDown->setValue ( max );
376 } else { 378 } else {
377 CheckBoxDown->setChecked( false ); 379 CheckBoxDown->setChecked( false );
378 SpinBoxDown->setValue ( 5 ); 380 SpinBoxDown->setValue ( 5 );
379 } 381 }
380 CheckBoxLeaveOn->setChecked( data->getLeaveOnServer() ); 382 CheckBoxLeaveOn->setChecked( data->getLeaveOnServer() );
381} 383}
382 384
@@ -407,57 +409,59 @@ void IMAPconfig::accept()
407 */ 409 */
408 410
409POP3config::POP3config( POP3account *account, QWidget *parent, const char *name, bool modal, WFlags flags ) 411POP3config::POP3config( POP3account *account, QWidget *parent, const char *name, bool modal, WFlags flags )
410 : POP3configUI( parent, name, modal, flags ) 412 : POP3configUI( parent, name, modal, flags )
411{ 413{
412 data = account; 414 data = account;
413 //fillValues(); 415 //fillValues();
414 416
415 connect( ComboBox1, SIGNAL( activated(int) ), SLOT( slotConnectionToggle(int) ) ); 417 connect( ComboBox1, SIGNAL( activated(int) ), SLOT( slotConnectionToggle(int) ) );
416 ComboBox1->insertItem( "Only if available", 0 ); 418 ComboBox1->insertItem( "Only if available", 0 );
417 ComboBox1->insertItem( "Always, Negotiated", 1 ); 419 ComboBox1->insertItem( "Always, Negotiated", 1 );
418 ComboBox1->insertItem( "Connect on secure port", 2 ); 420 ComboBox1->insertItem( "Connect on secure port", 2 );
419 ComboBox1->insertItem( "Run command instead", 3 ); 421 ComboBox1->insertItem( "Run command instead", 3 );
420 CommandEdit->hide(); 422 CommandEdit->hide();
421 fillValues(); 423 fillValues();
422 //ComboBox1->setCurrentItem( data->ConnectionType() ); 424 //ComboBox1->setCurrentItem( data->ConnectionType() );
423} 425}
424 426
425void POP3config::slotConnectionToggle( int index ) 427void POP3config::slotConnectionToggle( int index )
426{ 428{
427 // 2 is ssl connection 429 // 2 is ssl connection
428 if ( index == 2 ) 430 if ( index == 2 )
429 { 431 {
430 portLine->setText( POP3_SSL_PORT ); 432 portLine->setText( POP3_SSL_PORT );
433 CommandEdit->hide();
431 } 434 }
432 else if ( index == 3 ) 435 else if ( index == 3 )
433 { 436 {
434 portLine->setText( POP3_PORT ); 437 portLine->setText( POP3_PORT );
435 CommandEdit->show(); 438 CommandEdit->show();
436 } 439 }
437 else 440 else
438 { 441 {
439 portLine->setText( POP3_PORT ); 442 portLine->setText( POP3_PORT );
443 CommandEdit->hide();
440 } 444 }
441} 445}
442 446
443void POP3config::fillValues() 447void POP3config::fillValues()
444{ 448{
445 accountLine->setText( data->getAccountName() ); 449 accountLine->setText( data->getAccountName() );
446 serverLine->setText( data->getServer() ); 450 serverLine->setText( data->getServer() );
447 portLine->setText( data->getPort() ); 451 portLine->setText( data->getPort() );
448 ComboBox1->setCurrentItem( data->ConnectionType() ); 452 ComboBox1->setCurrentItem( data->ConnectionType() );
449 userLine->setText( data->getUser() ); 453 userLine->setText( data->getUser() );
450 passLine->setText( data->getPassword() ); 454 passLine->setText( data->getPassword() );
451 localFolder->setText( data->getLocalFolder() ); 455 localFolder->setText( data->getLocalFolder() );
452 int max = data->getMaxMailSize() ; 456 int max = data->getMaxMailSize() ;
453 if ( max ) { 457 if ( max ) {
454 CheckBoxDown->setChecked( true ); 458 CheckBoxDown->setChecked( true );
455 SpinBoxDown->setValue ( max ); 459 SpinBoxDown->setValue ( max );
456 } else { 460 } else {
457 CheckBoxDown->setChecked( false ); 461 CheckBoxDown->setChecked( false );
458 SpinBoxDown->setValue ( 5 ); 462 SpinBoxDown->setValue ( 5 );
459 } 463 }
460 CheckBoxLeaveOn->setChecked( data->getLeaveOnServer() ); 464 CheckBoxLeaveOn->setChecked( data->getLeaveOnServer() );
461} 465}
462 466
463void POP3config::accept() 467void POP3config::accept()
@@ -499,61 +503,63 @@ SMTPconfig::SMTPconfig( SMTPaccount *account, QWidget *parent, const char *name,
499 icon = SmallIcon("fileopen"); 503 icon = SmallIcon("fileopen");
500 SignaturButton->setText(""); 504 SignaturButton->setText("");
501 SignaturButton->setIconSet (icon ) ; 505 SignaturButton->setIconSet (icon ) ;
502 SignaturButton->setMaximumSize ( SignaturButton->sizeHint().height()+4,SignaturButton->sizeHint().height()) ; 506 SignaturButton->setMaximumSize ( SignaturButton->sizeHint().height()+4,SignaturButton->sizeHint().height()) ;
503 connect( SignaturButton, SIGNAL( clicked() ), this, SLOT( chooseSig() ) ); 507 connect( SignaturButton, SIGNAL( clicked() ), this, SLOT( chooseSig() ) );
504 connect( ComboBox1, SIGNAL( activated(int) ), SLOT( slotConnectionToggle(int) ) ); 508 connect( ComboBox1, SIGNAL( activated(int) ), SLOT( slotConnectionToggle(int) ) );
505 ComboBox1->insertItem( "No secure connection, no TLS", 0 ); 509 ComboBox1->insertItem( "No secure connection, no TLS", 0 );
506 ComboBox1->insertItem( "Only if available, try TLS", 1 ); 510 ComboBox1->insertItem( "Only if available, try TLS", 1 );
507 ComboBox1->insertItem( "Always, use TLS", 2 ); 511 ComboBox1->insertItem( "Always, use TLS", 2 );
508 ComboBox1->insertItem( "Connect on secure port (SSL)", 3 ); 512 ComboBox1->insertItem( "Connect on secure port (SSL)", 3 );
509 ComboBox1->insertItem( "Run command instead", 4 ); 513 ComboBox1->insertItem( "Run command instead", 4 );
510 CommandEdit->hide(); 514 CommandEdit->hide();
511 fillValues(); 515 fillValues();
512 //ComboBox1->setCurrentItem( data->ConnectionType() ); 516 //ComboBox1->setCurrentItem( data->ConnectionType() );
513} 517}
514void SMTPconfig::chooseSig() 518void SMTPconfig::chooseSig()
515{ 519{
516 QString lnk = KFileDialog::getOpenFileName( "", "Choose Signatur File", this ); 520 QString lnk = KFileDialog::getOpenFileName( "", "Choose Signatur File", this );
517 if ( !lnk.isEmpty() ) { 521 if ( !lnk.isEmpty() ) {
518 SignaturEdit->setText( lnk ); 522 SignaturEdit->setText( lnk );
519 } 523 }
520} 524}
521void SMTPconfig::slotConnectionToggle( int index ) 525void SMTPconfig::slotConnectionToggle( int index )
522{ 526{
523 // 2 is ssl connection 527 // 3 is ssl connection
524 if ( index == 2 ) 528 if ( index == 3 )
525 { 529 {
526 portLine->setText( SMTP_SSL_PORT ); 530 portLine->setText( SMTP_SSL_PORT );
531 CommandEdit->hide();
527 } 532 }
528 else if ( index == 3 ) 533 else if ( index == 4 )
529 { 534 {
530 portLine->setText( SMTP_PORT ); 535 portLine->setText( SMTP_PORT );
531 CommandEdit->show(); 536 CommandEdit->show();
532 } 537 }
533 else 538 else
534 { 539 {
535 portLine->setText( SMTP_PORT ); 540 portLine->setText( SMTP_PORT );
541 CommandEdit->hide();
536 } 542 }
537} 543}
538 544
539void SMTPconfig::fillValues() 545void SMTPconfig::fillValues()
540{ 546{
541 accountLine->setText( data->getAccountName() ); 547 accountLine->setText( data->getAccountName() );
542 serverLine->setText( data->getServer() ); 548 serverLine->setText( data->getServer() );
543 portLine->setText( data->getPort() ); 549 portLine->setText( data->getPort() );
544 ComboBox1->setCurrentItem( data->ConnectionType() ); 550 ComboBox1->setCurrentItem( data->ConnectionType() );
545 loginBox->setChecked( data->getLogin() ); 551 loginBox->setChecked( data->getLogin() );
546 userLine->setText( data->getUser() ); 552 userLine->setText( data->getUser() );
547 passLine->setText( data->getPassword() ); 553 passLine->setText( data->getPassword() );
548 SignaturEdit->setText( data->getSigFile() ); 554 SignaturEdit->setText( data->getSigFile() );
549} 555}
550 556
551void SMTPconfig::accept() 557void SMTPconfig::accept()
552{ 558{
553 data->setAccountName( accountLine->text() ); 559 data->setAccountName( accountLine->text() );
554 data->setServer( serverLine->text() ); 560 data->setServer( serverLine->text() );
555 data->setPort( portLine->text() ); 561 data->setPort( portLine->text() );
556 data->setConnectionType( ComboBox1->currentItem() ); 562 data->setConnectionType( ComboBox1->currentItem() );
557 data->setLogin( loginBox->isChecked() ); 563 data->setLogin( loginBox->isChecked() );
558 data->setUser( userLine->text() ); 564 data->setUser( userLine->text() );
559 data->setPassword( passLine->text() ); 565 data->setPassword( passLine->text() );
diff --git a/kmicromail/libmailwrapper/smtpwrapper.cpp b/kmicromail/libmailwrapper/smtpwrapper.cpp
index 872a460..845c71c 100644
--- a/kmicromail/libmailwrapper/smtpwrapper.cpp
+++ b/kmicromail/libmailwrapper/smtpwrapper.cpp
@@ -223,94 +223,100 @@ void SMTPwrapper::connect_server()
223 ; // odebug << "Servername " << server << " at port " << port << "" << oendl; 223 ; // odebug << "Servername " << server << " at port " << port << "" << oendl;
224 if ( ssl ) { 224 if ( ssl ) {
225 qDebug("smtp: ssl_connect "); 225 qDebug("smtp: ssl_connect ");
226 err = mailsmtp_ssl_connect( m_smtp, server.latin1(), port ); 226 err = mailsmtp_ssl_connect( m_smtp, server.latin1(), port );
227 } else { 227 } else {
228 ; // odebug << "No SSL session" << oendl; 228 ; // odebug << "No SSL session" << oendl;
229 err = mailsmtp_socket_connect( m_smtp, server.latin1(), port ); 229 err = mailsmtp_socket_connect( m_smtp, server.latin1(), port );
230 } 230 }
231 if ( err != MAILSMTP_NO_ERROR ) { 231 if ( err != MAILSMTP_NO_ERROR ) {
232 qDebug("Error init SMTP connection" ); 232 qDebug("Error init SMTP connection" );
233 failuretext = i18n("Error init SMTP connection:\n%1").arg(mailsmtpError(err)); 233 failuretext = i18n("Error init SMTP connection:\n%1").arg(mailsmtpError(err));
234 result = 0; 234 result = 0;
235 } 235 }
236 236
237 qDebug("SMTP connection inited "); 237 qDebug("SMTP connection inited ");
238 /* switch to tls after init 'cause there it will send the ehlo */ 238 /* switch to tls after init 'cause there it will send the ehlo */
239 if (result) { 239 if (result) {
240 err = mailsmtp_init( m_smtp ); 240 err = mailsmtp_init( m_smtp );
241 if (err != MAILSMTP_NO_ERROR) { 241 if (err != MAILSMTP_NO_ERROR) {
242 result = 0; 242 result = 0;
243 qDebug("Error init SMTP connection "); 243 qDebug("Error init SMTP connection ");
244 failuretext = i18n("Error init SMTP connection:\n%1").arg(mailsmtpError(err)); 244 failuretext = i18n("Error init SMTP connection:\n%1").arg(mailsmtpError(err));
245 } 245 }
246 } 246 }
247 if (try_tls) { 247 if (result && try_tls) {
248 qDebug("Smpt: Try tls "); 248 qDebug("Smpt: Try tls ");
249 err = start_smtp_tls(); 249 err = start_smtp_tls();
250 if (err != MAILSMTP_NO_ERROR) { 250 if (err != MAILSMTP_NO_ERROR) {
251 try_tls = false; 251 try_tls = false;
252 qDebug("no tls "); 252 qDebug("no tls ");
253 } else { 253 } else {
254 err = mailesmtp_ehlo(m_smtp); 254 err = mailesmtp_ehlo(m_smtp);
255 if ( err != MAILSMTP_NO_ERROR )
256 result = 0;
255 } 257 }
256 } 258 }
257 //qDebug("mailesmtp_ehlo %d ",err ); 259 //qDebug("mailesmtp_ehlo %d ",err );
258 if (!try_tls && force_tls) { 260 if (!try_tls && force_tls) {
259 result = 0; 261 result = 0;
260 failuretext = i18n("Error init SMTP tls:%1").arg(mailsmtpError(err)); 262 failuretext = i18n("Error init SMTP tls:%1").arg(mailsmtpError(err));
261 } 263 }
262 264
263 if (result==1 && m_SmtpAccount->getLogin() ) { 265 if (result==1 && m_SmtpAccount->getLogin() ) {
264 ; // odebug << "smtp with auth" << oendl; 266 ; // odebug << "smtp with auth" << oendl;
265 if ( m_SmtpAccount->getUser().isEmpty() || m_SmtpAccount->getPassword().isEmpty() ) { 267 if ( m_SmtpAccount->getUser().isEmpty() || m_SmtpAccount->getPassword().isEmpty() ) {
266 // get'em 268 // get'em
267 LoginDialog login( m_SmtpAccount->getUser(), 269 LoginDialog login( m_SmtpAccount->getUser(),
268 m_SmtpAccount->getPassword(), NULL, 0, true ); 270 m_SmtpAccount->getPassword(), NULL, 0, true );
269 login.show(); 271 login.show();
270 if ( QDialog::Accepted == login.exec() ) { 272 if ( QDialog::Accepted == login.exec() ) {
271 // ok 273 // ok
272 user = login.getUser(); 274 user = login.getUser();
273 pass = login.getPassword(); 275 pass = login.getPassword();
274 } else { 276 } else {
275 result = 0; 277 result = 0;
276 failuretext=i18n("Login aborted - \nstoring mail to localfolder"); 278 failuretext=i18n("Login aborted - \nstoring mail to localfolder");
277 } 279 }
278 } else { 280 } else {
279 user = m_SmtpAccount->getUser(); 281 user = m_SmtpAccount->getUser();
280 pass = m_SmtpAccount->getPassword(); 282 pass = m_SmtpAccount->getPassword();
281 } 283 }
282 ; // odebug << "session->auth: " << m_smtp->auth << "" << oendl; 284 ; // odebug << "session->auth: " << m_smtp->auth << "" << oendl;
283 if (result) { 285 if (result) {
284 err = mailsmtp_auth( m_smtp, (char*)user.latin1(), (char*)pass.latin1() ); 286 err = mailsmtp_auth( m_smtp, (char*)user.latin1(), (char*)pass.latin1() );
285 if ( err == MAILSMTP_NO_ERROR ) { 287 if ( err == MAILSMTP_NO_ERROR ) {
286 qDebug("Smtp authentification ok "); 288 qDebug("Smtp authentification ok ");
287 } else { 289 } else {
288 failuretext = i18n("Authentification failed"); 290 failuretext = i18n("Authentification failed");
289 result = 0; 291 result = 0;
290 } 292 }
291 } 293 }
292 } 294 }
295 if ( result == 0 ) {
296 mailsmtp_free(m_smtp);
297 m_smtp = 0;
298 }
293} 299}
294 300
295void SMTPwrapper::disc_server() 301void SMTPwrapper::disc_server()
296{ 302{
297 if (m_smtp) { 303 if (m_smtp) {
298 mailsmtp_quit( m_smtp ); 304 mailsmtp_quit( m_smtp );
299 mailsmtp_free( m_smtp ); 305 mailsmtp_free( m_smtp );
300 m_smtp = 0; 306 m_smtp = 0;
301 } 307 }
302} 308}
303 309
304int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size ) 310int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size )
305{ 311{
306 int err,result; 312 int err,result;
307 QString failuretext = ""; 313 QString failuretext = "";
308 314
309 connect_server(); 315 connect_server();
310 316
311 result = 1; 317 result = 1;
312 if (m_smtp) { 318 if (m_smtp) {
313 err = mailsmtp_send( m_smtp, from, rcpts, data, size ); 319 err = mailsmtp_send( m_smtp, from, rcpts, data, size );
314 if ( err != MAILSMTP_NO_ERROR ) { 320 if ( err != MAILSMTP_NO_ERROR ) {
315 qDebug("Error sending mail"); 321 qDebug("Error sending mail");
316 failuretext=i18n("Error sending mail:\n%1").arg(mailsmtpError(err)); 322 failuretext=i18n("Error sending mail:\n%1").arg(mailsmtpError(err));
@@ -326,48 +332,52 @@ int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size )
326 ; // odebug << "Mail sent." << oendl; 332 ; // odebug << "Mail sent." << oendl;
327 storeMail(data,size,"Sent"); 333 storeMail(data,size,"Sent");
328 } 334 }
329 return result; 335 return result;
330} 336}
331 337
332bool SMTPwrapper::sendMail(const Opie::Core::OSmartPointer<Mail>&mail,bool later ) 338bool SMTPwrapper::sendMail(const Opie::Core::OSmartPointer<Mail>&mail,bool later )
333{ 339{
334 mailmime * mimeMail; 340 mailmime * mimeMail;
335 bool result = true; 341 bool result = true;
336 mimeMail = createMimeMail(mail ); 342 mimeMail = createMimeMail(mail );
337 if ( mimeMail == 0 ) { 343 if ( mimeMail == 0 ) {
338 qDebug("SMTP wrapper:Error creating mail! "); 344 qDebug("SMTP wrapper:Error creating mail! ");
339 return false; 345 return false;
340 } else { 346 } else {
341 sendProgress = new progressMailSend(); 347 sendProgress = new progressMailSend();
342 sendProgress->show(); 348 sendProgress->show();
343 sendProgress->setMaxMails(1); 349 sendProgress->setMaxMails(1);
344 result = smtpSend( mimeMail,later); 350 result = smtpSend( mimeMail,later);
345 ; // odebug << "Clean up done" << oendl; 351 ; // odebug << "Clean up done" << oendl;
346 sendProgress->hide(); 352 sendProgress->hide();
347 delete sendProgress; 353 delete sendProgress;
348 sendProgress = 0; 354 sendProgress = 0;
349 mailmime_free( mimeMail ); 355 mailmime_free( mimeMail );
356 if ( m_smtp ) {
357 mailsmtp_free(m_smtp);
358 m_smtp = 0;
359 }
350 } 360 }
351 return result; 361 return result;
352} 362}
353 363
354int SMTPwrapper::sendQueuedMail(AbstractMail*wrap,const RecMailP&which) { 364int SMTPwrapper::sendQueuedMail(AbstractMail*wrap,const RecMailP&which) {
355 size_t curTok = 0; 365 size_t curTok = 0;
356 mailimf_fields *fields = 0; 366 mailimf_fields *fields = 0;
357 mailimf_field*ffrom = 0; 367 mailimf_field*ffrom = 0;
358 clist *rcpts = 0; 368 clist *rcpts = 0;
359 char*from = 0; 369 char*from = 0;
360 int res = 0; 370 int res = 0;
361 371
362 encodedString * data = wrap->fetchRawBody(which); 372 encodedString * data = wrap->fetchRawBody(which);
363 if (!data) 373 if (!data)
364 return 0; 374 return 0;
365 int err = mailimf_fields_parse( data->Content(), data->Length(), &curTok, &fields ); 375 int err = mailimf_fields_parse( data->Content(), data->Length(), &curTok, &fields );
366 if (err != MAILIMF_NO_ERROR) { 376 if (err != MAILIMF_NO_ERROR) {
367 delete data; 377 delete data;
368 delete wrap; 378 delete wrap;
369 return 0; 379 return 0;
370 } 380 }
371 381
372 rcpts = createRcptList( fields ); 382 rcpts = createRcptList( fields );
373 ffrom = getField(fields, MAILIMF_FIELD_FROM ); 383 ffrom = getField(fields, MAILIMF_FIELD_FROM );
@@ -437,36 +447,41 @@ bool SMTPwrapper::flushOutbox() {
437 } else { 447 } else {
438 return true; 448 return true;
439 } 449 }
440 } 450 }
441 451
442 452
443 sendProgress = new progressMailSend(); 453 sendProgress = new progressMailSend();
444 sendProgress->show(); 454 sendProgress->show();
445 sendProgress->setMaxMails(mailsToSend.count()); 455 sendProgress->setMaxMails(mailsToSend.count());
446 456
447 while (returnValue && mailsToSend.count()>0) { 457 while (returnValue && mailsToSend.count()>0) {
448 if (sendQueuedMail(wrap, (*mailsToSend.begin()))==0) { 458 if (sendQueuedMail(wrap, (*mailsToSend.begin()))==0) {
449 QMessageBox::critical(0,i18n("Error sending mail"), 459 QMessageBox::critical(0,i18n("Error sending mail"),
450 i18n("Error sending queued mail.\nBreaking.")); 460 i18n("Error sending queued mail.\nBreaking."));
451 returnValue = false; 461 returnValue = false;
452 } 462 }
453 mailsToRemove.append((*mailsToSend.begin())); 463 mailsToRemove.append((*mailsToSend.begin()));
454 mailsToSend.remove(mailsToSend.begin()); 464 mailsToSend.remove(mailsToSend.begin());
455 sendProgress->setCurrentMails(mailsToRemove.count()); 465 sendProgress->setCurrentMails(mailsToRemove.count());
456 } 466 }
457 if (reset_user_value) { 467 if (reset_user_value) {
458 m_SmtpAccount->setUser(oldUser); 468 m_SmtpAccount->setUser(oldUser);
459 m_SmtpAccount->setPassword(oldPw); 469 m_SmtpAccount->setPassword(oldPw);
460 } 470 }
471
461 KConfig cfg( locateLocal("config", "kopiemailrc" ) ); 472 KConfig cfg( locateLocal("config", "kopiemailrc" ) );
462 cfg.setGroup( "Status" ); 473 cfg.setGroup( "Status" );
463 m_queuedMail = mailsToSend.count(); 474 m_queuedMail = mailsToSend.count();
464 cfg.writeEntry( "outgoing", m_queuedMail ); 475 cfg.writeEntry( "outgoing", m_queuedMail );
465 emit queuedMails( m_queuedMail ); 476 emit queuedMails( m_queuedMail );
466 sendProgress->hide(); 477 sendProgress->hide();
467 delete sendProgress; 478 delete sendProgress;
468 sendProgress = 0; 479 sendProgress = 0;
469 wrap->deleteMails(mbox,mailsToRemove); 480 wrap->deleteMails(mbox,mailsToRemove);
470 delete wrap; 481 delete wrap;
482 if ( m_smtp ) {
483 mailsmtp_free(m_smtp);
484 m_smtp = 0;
485 }
471 return returnValue; 486 return returnValue;
472} 487}