-rw-r--r-- | kmicromail/editaccounts.cpp | 12 | ||||
-rw-r--r-- | kmicromail/libmailwrapper/smtpwrapper.cpp | 21 |
2 files changed, 27 insertions, 6 deletions
diff --git a/kmicromail/editaccounts.cpp b/kmicromail/editaccounts.cpp index 49049f6..2c0f2d8 100644 --- a/kmicromail/editaccounts.cpp +++ b/kmicromail/editaccounts.cpp | |||
@@ -254,378 +254,384 @@ void EditAccounts::slotNewNews() | |||
254 | { | 254 | { |
255 | slotNewAccount( "NNTP" ); | 255 | slotNewAccount( "NNTP" ); |
256 | } | 256 | } |
257 | 257 | ||
258 | void EditAccounts::slotEditNews() | 258 | void EditAccounts::slotEditNews() |
259 | { | 259 | { |
260 | if ( !newsList->currentItem() ) | 260 | if ( !newsList->currentItem() ) |
261 | { | 261 | { |
262 | QMessageBox::information( this, i18n( "Error" ), | 262 | QMessageBox::information( this, i18n( "Error" ), |
263 | i18n( "<p>Please select an account.</p>" ), | 263 | i18n( "<p>Please select an account.</p>" ), |
264 | i18n( "Ok" ) ); | 264 | i18n( "Ok" ) ); |
265 | return; | 265 | return; |
266 | } | 266 | } |
267 | 267 | ||
268 | Account *a = ((AccountListItem *) newsList->currentItem())->getAccount(); | 268 | Account *a = ((AccountListItem *) newsList->currentItem())->getAccount(); |
269 | slotEditAccount( a ); | 269 | slotEditAccount( a ); |
270 | } | 270 | } |
271 | 271 | ||
272 | void EditAccounts::slotDeleteNews() | 272 | void EditAccounts::slotDeleteNews() |
273 | { | 273 | { |
274 | if ( !newsList->currentItem() ) | 274 | if ( !newsList->currentItem() ) |
275 | { | 275 | { |
276 | QMessageBox::information( this, i18n( "Error" ), | 276 | QMessageBox::information( this, i18n( "Error" ), |
277 | i18n( "<p>Please select an account.</p>" ), | 277 | i18n( "<p>Please select an account.</p>" ), |
278 | i18n( "Ok" ) ); | 278 | i18n( "Ok" ) ); |
279 | return; | 279 | return; |
280 | } | 280 | } |
281 | 281 | ||
282 | Account *a = ((AccountListItem *) newsList->currentItem())->getAccount(); | 282 | Account *a = ((AccountListItem *) newsList->currentItem())->getAccount(); |
283 | slotDeleteAccount( a ); | 283 | slotDeleteAccount( a ); |
284 | } | 284 | } |
285 | 285 | ||
286 | void EditAccounts::slotAdjustColumns() | 286 | void EditAccounts::slotAdjustColumns() |
287 | { | 287 | { |
288 | int currPage = configTab->currentPageIndex(); | 288 | int currPage = configTab->currentPageIndex(); |
289 | 289 | ||
290 | configTab->showPage( mailTab ); | 290 | configTab->showPage( mailTab ); |
291 | mailList->setColumnWidth( 0, mailList->visibleWidth() - 50 ); | 291 | mailList->setColumnWidth( 0, mailList->visibleWidth() - 50 ); |
292 | mailList->setColumnWidth( 1, 50 ); | 292 | mailList->setColumnWidth( 1, 50 ); |
293 | 293 | ||
294 | configTab->showPage( newsTab ); | 294 | configTab->showPage( newsTab ); |
295 | newsList->setColumnWidth( 0, newsList->visibleWidth() ); | 295 | newsList->setColumnWidth( 0, newsList->visibleWidth() ); |
296 | 296 | ||
297 | configTab->setCurrentPage( currPage ); | 297 | configTab->setCurrentPage( currPage ); |
298 | } | 298 | } |
299 | 299 | ||
300 | void EditAccounts::accept() | 300 | void EditAccounts::accept() |
301 | { | 301 | { |
302 | settings->saveAccounts(); | 302 | settings->saveAccounts(); |
303 | 303 | ||
304 | QDialog::accept(); | 304 | QDialog::accept(); |
305 | } | 305 | } |
306 | 306 | ||
307 | /** | 307 | /** |
308 | * SelectMailType | 308 | * SelectMailType |
309 | */ | 309 | */ |
310 | 310 | ||
311 | SelectMailType::SelectMailType( QString *selection, QWidget *parent, const char *name, bool modal, WFlags flags ) | 311 | SelectMailType::SelectMailType( QString *selection, QWidget *parent, const char *name, bool modal, WFlags flags ) |
312 | : SelectMailTypeUI( parent, name, modal, flags ) | 312 | : SelectMailTypeUI( parent, name, modal, flags ) |
313 | { | 313 | { |
314 | selected = selection; | 314 | selected = selection; |
315 | selected->replace( 0, selected->length(), typeBox->currentText() ); | 315 | selected->replace( 0, selected->length(), typeBox->currentText() ); |
316 | connect( typeBox, SIGNAL( activated(const QString&) ), SLOT( slotSelection(const QString&) ) ); | 316 | connect( typeBox, SIGNAL( activated(const QString&) ), SLOT( slotSelection(const QString&) ) ); |
317 | } | 317 | } |
318 | 318 | ||
319 | void SelectMailType::slotSelection( const QString &sel ) | 319 | void SelectMailType::slotSelection( const QString &sel ) |
320 | { | 320 | { |
321 | selected->replace( 0, selected->length(), sel ); | 321 | selected->replace( 0, selected->length(), sel ); |
322 | } | 322 | } |
323 | 323 | ||
324 | /** | 324 | /** |
325 | * IMAPconfig | 325 | * IMAPconfig |
326 | */ | 326 | */ |
327 | 327 | ||
328 | IMAPconfig::IMAPconfig( IMAPaccount *account, QWidget *parent, const char *name, bool modal, WFlags flags ) | 328 | IMAPconfig::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 | ||
345 | void IMAPconfig::slotConnectionToggle( int index ) | 345 | void 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 | ||
362 | void IMAPconfig::fillValues() | 364 | void 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 | ||
383 | void IMAPconfig::accept() | 385 | void IMAPconfig::accept() |
384 | { | 386 | { |
385 | if ( localFolder->text().contains("/") ||localFolder->text().contains("\\") ) { | 387 | if ( localFolder->text().contains("/") ||localFolder->text().contains("\\") ) { |
386 | QMessageBox::information( this, i18n( "Error" ), | 388 | QMessageBox::information( this, i18n( "Error" ), |
387 | i18n( "No paths allowed in\nlocal folder settings.\nPlease specify a folder\nname or leave empty\nto create local folder\nwith account name\nautomatically." ), | 389 | i18n( "No paths allowed in\nlocal folder settings.\nPlease specify a folder\nname or leave empty\nto create local folder\nwith account name\nautomatically." ), |
388 | i18n( "Ok" ) ); | 390 | i18n( "Ok" ) ); |
389 | return; | 391 | return; |
390 | } | 392 | } |
391 | data->setAccountName( accountLine->text() ); | 393 | data->setAccountName( accountLine->text() ); |
392 | data->setServer( serverLine->text() ); | 394 | data->setServer( serverLine->text() ); |
393 | data->setPort( portLine->text() ); | 395 | data->setPort( portLine->text() ); |
394 | data->setConnectionType( ComboBox1->currentItem() ); | 396 | data->setConnectionType( ComboBox1->currentItem() ); |
395 | data->setUser( userLine->text() ); | 397 | data->setUser( userLine->text() ); |
396 | data->setPassword( passLine->text() ); | 398 | data->setPassword( passLine->text() ); |
397 | data->setPrefix(prefixLine->text()); | 399 | data->setPrefix(prefixLine->text()); |
398 | data->setLocalFolder( localFolder->text() ); | 400 | data->setLocalFolder( localFolder->text() ); |
399 | data->setMaxMailSize( CheckBoxDown->isChecked()?SpinBoxDown->value():0 ) ; | 401 | data->setMaxMailSize( CheckBoxDown->isChecked()?SpinBoxDown->value():0 ) ; |
400 | data->setLeaveOnServer( CheckBoxLeaveOn->isChecked() ); | 402 | data->setLeaveOnServer( CheckBoxLeaveOn->isChecked() ); |
401 | 403 | ||
402 | QDialog::accept(); | 404 | QDialog::accept(); |
403 | } | 405 | } |
404 | 406 | ||
405 | /** | 407 | /** |
406 | * POP3config | 408 | * POP3config |
407 | */ | 409 | */ |
408 | 410 | ||
409 | POP3config::POP3config( POP3account *account, QWidget *parent, const char *name, bool modal, WFlags flags ) | 411 | POP3config::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 | ||
425 | void POP3config::slotConnectionToggle( int index ) | 427 | void 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 | ||
443 | void POP3config::fillValues() | 447 | void 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 | ||
463 | void POP3config::accept() | 467 | void POP3config::accept() |
464 | { | 468 | { |
465 | if ( localFolder->text().contains("/") ||localFolder->text().contains("\\") ) { | 469 | if ( localFolder->text().contains("/") ||localFolder->text().contains("\\") ) { |
466 | QMessageBox::information( this, i18n( "Error" ), | 470 | QMessageBox::information( this, i18n( "Error" ), |
467 | i18n( "No paths allowed in\nlocal folder settings.\nPlease specify a folder\nname or leave empty\nto create local folder\nwith account name\nautomatically." ), | 471 | i18n( "No paths allowed in\nlocal folder settings.\nPlease specify a folder\nname or leave empty\nto create local folder\nwith account name\nautomatically." ), |
468 | i18n( "Ok" ) ); | 472 | i18n( "Ok" ) ); |
469 | return; | 473 | return; |
470 | } | 474 | } |
471 | data->setAccountName( accountLine->text() ); | 475 | data->setAccountName( accountLine->text() ); |
472 | data->setServer( serverLine->text() ); | 476 | data->setServer( serverLine->text() ); |
473 | data->setPort( portLine->text() ); | 477 | data->setPort( portLine->text() ); |
474 | data->setConnectionType( ComboBox1->currentItem() ); | 478 | data->setConnectionType( ComboBox1->currentItem() ); |
475 | data->setUser( userLine->text() ); | 479 | data->setUser( userLine->text() ); |
476 | data->setPassword( passLine->text() ); | 480 | data->setPassword( passLine->text() ); |
477 | data->setLocalFolder( localFolder->text() ); | 481 | data->setLocalFolder( localFolder->text() ); |
478 | data->setMaxMailSize( CheckBoxDown->isChecked()?SpinBoxDown->value():0 ) ; | 482 | data->setMaxMailSize( CheckBoxDown->isChecked()?SpinBoxDown->value():0 ) ; |
479 | data->setLeaveOnServer( CheckBoxLeaveOn->isChecked() ); | 483 | data->setLeaveOnServer( CheckBoxLeaveOn->isChecked() ); |
480 | 484 | ||
481 | QDialog::accept(); | 485 | QDialog::accept(); |
482 | } | 486 | } |
483 | 487 | ||
484 | /** | 488 | /** |
485 | * SMTPconfig | 489 | * SMTPconfig |
486 | */ | 490 | */ |
487 | 491 | ||
488 | SMTPconfig::SMTPconfig( SMTPaccount *account, QWidget *parent, const char *name, bool modal, WFlags flags ) | 492 | SMTPconfig::SMTPconfig( SMTPaccount *account, QWidget *parent, const char *name, bool modal, WFlags flags ) |
489 | : SMTPconfigUI( parent, name, modal, flags ) | 493 | : SMTPconfigUI( parent, name, modal, flags ) |
490 | { | 494 | { |
491 | data = account; | 495 | data = account; |
492 | 496 | ||
493 | connect( loginBox, SIGNAL( toggled(bool) ), userLine, SLOT( setEnabled(bool) ) ); | 497 | connect( loginBox, SIGNAL( toggled(bool) ), userLine, SLOT( setEnabled(bool) ) ); |
494 | connect( loginBox, SIGNAL( toggled(bool) ), passLine, SLOT( setEnabled(bool) ) ); | 498 | connect( loginBox, SIGNAL( toggled(bool) ), passLine, SLOT( setEnabled(bool) ) ); |
495 | 499 | ||
496 | // fillValues(); | 500 | // fillValues(); |
497 | QIconSet icon; | 501 | QIconSet icon; |
498 | //icon = SmallIcon("fileexport"); | 502 | //icon = SmallIcon("fileexport"); |
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 | } |
514 | void SMTPconfig::chooseSig() | 518 | void 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 | } |
521 | void SMTPconfig::slotConnectionToggle( int index ) | 525 | void 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 | ||
539 | void SMTPconfig::fillValues() | 545 | void 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 | ||
551 | void SMTPconfig::accept() | 557 | void 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() ); |
560 | data->setSigFile( SignaturEdit->text() ); | 566 | data->setSigFile( SignaturEdit->text() ); |
561 | 567 | ||
562 | QDialog::accept(); | 568 | QDialog::accept(); |
563 | } | 569 | } |
564 | 570 | ||
565 | /** | 571 | /** |
566 | * NNTPconfig | 572 | * NNTPconfig |
567 | */ | 573 | */ |
568 | 574 | ||
569 | NNTPconfig::NNTPconfig( NNTPaccount *account, QWidget *parent, const char *name, bool modal, WFlags flags ) | 575 | NNTPconfig::NNTPconfig( NNTPaccount *account, QWidget *parent, const char *name, bool modal, WFlags flags ) |
570 | : NNTPconfigUI( parent, name, modal, flags ) | 576 | : NNTPconfigUI( parent, name, modal, flags ) |
571 | { | 577 | { |
572 | data = account; | 578 | data = account; |
573 | 579 | ||
574 | connect( loginBox, SIGNAL( toggled(bool) ), userLine, SLOT( setEnabled(bool) ) ); | 580 | connect( loginBox, SIGNAL( toggled(bool) ), userLine, SLOT( setEnabled(bool) ) ); |
575 | connect( loginBox, SIGNAL( toggled(bool) ), passLine, SLOT( setEnabled(bool) ) ); | 581 | connect( loginBox, SIGNAL( toggled(bool) ), passLine, SLOT( setEnabled(bool) ) ); |
576 | connect( GetNGButton, SIGNAL( clicked() ), this, SLOT( slotGetNG() ) ); | 582 | connect( GetNGButton, SIGNAL( clicked() ), this, SLOT( slotGetNG() ) ); |
577 | connect( ShowSubcribed, SIGNAL( clicked() ), this, SLOT( slotShowSub() ) ); | 583 | connect( ShowSubcribed, SIGNAL( clicked() ), this, SLOT( slotShowSub() ) ); |
578 | connect( FilterButton, SIGNAL( clicked() ), this, SLOT( slotShowFilter() ) ); | 584 | connect( FilterButton, SIGNAL( clicked() ), this, SLOT( slotShowFilter() ) ); |
579 | fillValues(); | 585 | fillValues(); |
580 | 586 | ||
581 | connect( sslBox, SIGNAL( toggled(bool) ), SLOT( slotSSL(bool) ) ); | 587 | connect( sslBox, SIGNAL( toggled(bool) ), SLOT( slotSSL(bool) ) ); |
582 | } | 588 | } |
583 | 589 | ||
584 | void NNTPconfig::slotShowSub() | 590 | void NNTPconfig::slotShowSub() |
585 | { | 591 | { |
586 | save(); | 592 | save(); |
587 | data->save(); | 593 | data->save(); |
588 | ListViewGroups->clear(); | 594 | ListViewGroups->clear(); |
589 | for ( QStringList::Iterator it = subscribedGroups.begin(); it != subscribedGroups.end(); ++it ) { | 595 | for ( QStringList::Iterator it = subscribedGroups.begin(); it != subscribedGroups.end(); ++it ) { |
590 | QCheckListItem *item; | 596 | QCheckListItem *item; |
591 | item = new QCheckListItem( ListViewGroups, (*it), QCheckListItem::CheckBox ); | 597 | item = new QCheckListItem( ListViewGroups, (*it), QCheckListItem::CheckBox ); |
592 | item->setOn( true ); | 598 | item->setOn( true ); |
593 | } | 599 | } |
594 | topLevelWidget()->setCaption( i18n("%1 groups subscribed").arg( subscribedGroups.count())); | 600 | topLevelWidget()->setCaption( i18n("%1 groups subscribed").arg( subscribedGroups.count())); |
595 | } | 601 | } |
596 | void NNTPconfig::slotShowFilter() | 602 | void NNTPconfig::slotShowFilter() |
597 | { | 603 | { |
598 | save(); | 604 | save(); |
599 | data->save(); | 605 | data->save(); |
600 | ListViewGroups->clear(); | 606 | ListViewGroups->clear(); |
601 | int count = 0; | 607 | int count = 0; |
602 | for ( QStringList::Iterator it = allGroups.begin(); it != allGroups.end(); ++it ) { | 608 | for ( QStringList::Iterator it = allGroups.begin(); it != allGroups.end(); ++it ) { |
603 | QCheckListItem *item; | 609 | QCheckListItem *item; |
604 | if ( GroupFilter->text().isEmpty() || (*it).find( GroupFilter->text() ) >= 0 ) { | 610 | if ( GroupFilter->text().isEmpty() || (*it).find( GroupFilter->text() ) >= 0 ) { |
605 | item = new QCheckListItem( ListViewGroups, (*it), QCheckListItem::CheckBox ); | 611 | item = new QCheckListItem( ListViewGroups, (*it), QCheckListItem::CheckBox ); |
606 | ++count; | 612 | ++count; |
607 | if ( subscribedGroups.contains( (*it) ) >= 1 ) { | 613 | if ( subscribedGroups.contains( (*it) ) >= 1 ) { |
608 | item->setOn( true ); | 614 | item->setOn( true ); |
609 | } | 615 | } |
610 | } | 616 | } |
611 | } | 617 | } |
612 | topLevelWidget()->setCaption( i18n("Filter found %1 groups").arg( count)); | 618 | topLevelWidget()->setCaption( i18n("Filter found %1 groups").arg( count)); |
613 | } | 619 | } |
614 | void NNTPconfig::slotGetNG() { | 620 | void NNTPconfig::slotGetNG() { |
615 | save(); | 621 | save(); |
616 | data->save(); | 622 | data->save(); |
617 | topLevelWidget()->setCaption( i18n("Fetching group list...")); | 623 | topLevelWidget()->setCaption( i18n("Fetching group list...")); |
618 | qApp->processEvents(); | 624 | qApp->processEvents(); |
619 | NNTPwrapper* tmp = new NNTPwrapper( data ); | 625 | NNTPwrapper* tmp = new NNTPwrapper( data ); |
620 | allGroups = tmp->listAllNewsgroups(); | 626 | allGroups = tmp->listAllNewsgroups(); |
621 | topLevelWidget()->setCaption( i18n("Downloaded %1 group names").arg( allGroups.count())); | 627 | topLevelWidget()->setCaption( i18n("Downloaded %1 group names").arg( allGroups.count())); |
622 | 628 | ||
623 | ListViewGroups->clear(); | 629 | ListViewGroups->clear(); |
624 | 630 | ||
625 | for ( QStringList::Iterator it = allGroups.begin(); it != allGroups.end(); ++it ) { | 631 | for ( QStringList::Iterator it = allGroups.begin(); it != allGroups.end(); ++it ) { |
626 | QCheckListItem *item; | 632 | QCheckListItem *item; |
627 | item = new QCheckListItem( ListViewGroups, (*it), QCheckListItem::CheckBox ); | 633 | item = new QCheckListItem( ListViewGroups, (*it), QCheckListItem::CheckBox ); |
628 | if ( subscribedGroups.contains( (*it) ) >= 1 ) { | 634 | if ( subscribedGroups.contains( (*it) ) >= 1 ) { |
629 | item->setOn( true ); | 635 | item->setOn( true ); |
630 | 636 | ||
631 | } | 637 | } |
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 | |||
@@ -151,322 +151,337 @@ bool SMTPwrapper::smtpSend( mailmime *mail,bool later) { | |||
151 | if (rcpts) | 151 | if (rcpts) |
152 | smtp_address_list_free( rcpts ); | 152 | smtp_address_list_free( rcpts ); |
153 | return result; | 153 | return result; |
154 | } | 154 | } |
155 | 155 | ||
156 | void SMTPwrapper::storeFailedMail(const char*data,unsigned int size, const char*failuremessage) | 156 | void SMTPwrapper::storeFailedMail(const char*data,unsigned int size, const char*failuremessage) |
157 | { | 157 | { |
158 | if (data) { | 158 | if (data) { |
159 | storeMail(data,size,"Sendfailed"); | 159 | storeMail(data,size,"Sendfailed"); |
160 | } | 160 | } |
161 | if (failuremessage) { | 161 | if (failuremessage) { |
162 | QMessageBox::critical(0,i18n("Error sending mail"), | 162 | QMessageBox::critical(0,i18n("Error sending mail"), |
163 | failuremessage); | 163 | failuremessage); |
164 | } | 164 | } |
165 | } | 165 | } |
166 | 166 | ||
167 | int SMTPwrapper::start_smtp_tls() | 167 | int SMTPwrapper::start_smtp_tls() |
168 | { | 168 | { |
169 | if (!m_smtp) { | 169 | if (!m_smtp) { |
170 | return MAILSMTP_ERROR_IN_PROCESSING; | 170 | return MAILSMTP_ERROR_IN_PROCESSING; |
171 | } | 171 | } |
172 | int err = mailesmtp_starttls(m_smtp); | 172 | int err = mailesmtp_starttls(m_smtp); |
173 | if (err != MAILSMTP_NO_ERROR) return err; | 173 | if (err != MAILSMTP_NO_ERROR) return err; |
174 | mailstream_low * low; | 174 | mailstream_low * low; |
175 | mailstream_low * new_low; | 175 | mailstream_low * new_low; |
176 | low = mailstream_get_low(m_smtp->stream); | 176 | low = mailstream_get_low(m_smtp->stream); |
177 | if (!low) { | 177 | if (!low) { |
178 | return MAILSMTP_ERROR_IN_PROCESSING; | 178 | return MAILSMTP_ERROR_IN_PROCESSING; |
179 | } | 179 | } |
180 | int fd = mailstream_low_get_fd(low); | 180 | int fd = mailstream_low_get_fd(low); |
181 | if (fd > -1 && (new_low = mailstream_low_ssl_open(fd))!=0) { | 181 | if (fd > -1 && (new_low = mailstream_low_ssl_open(fd))!=0) { |
182 | mailstream_low_free(low); | 182 | mailstream_low_free(low); |
183 | mailstream_set_low(m_smtp->stream, new_low); | 183 | mailstream_set_low(m_smtp->stream, new_low); |
184 | } else { | 184 | } else { |
185 | return MAILSMTP_ERROR_IN_PROCESSING; | 185 | return MAILSMTP_ERROR_IN_PROCESSING; |
186 | } | 186 | } |
187 | return err; | 187 | return err; |
188 | } | 188 | } |
189 | 189 | ||
190 | void SMTPwrapper::connect_server() | 190 | void 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 | } else if (m_SmtpAccount->ConnectionType() == 1) { | 209 | } else if (m_SmtpAccount->ConnectionType() == 1) { |
210 | try_tls = true; | 210 | try_tls = true; |
211 | } | 211 | } |
212 | int result = 1; | 212 | int result = 1; |
213 | port = m_SmtpAccount->getPort().toUInt(); | 213 | port = m_SmtpAccount->getPort().toUInt(); |
214 | 214 | ||
215 | m_smtp = mailsmtp_new( 20, &progress ); | 215 | m_smtp = mailsmtp_new( 20, &progress ); |
216 | if ( m_smtp == NULL ) { | 216 | if ( m_smtp == NULL ) { |
217 | /* no failure message cause this happens when problems with memory - than we | 217 | /* no failure message cause this happens when problems with memory - than we |
218 | we can not display any messagebox */ | 218 | we can not display any messagebox */ |
219 | return; | 219 | return; |
220 | } | 220 | } |
221 | 221 | ||
222 | int err = MAILSMTP_NO_ERROR; | 222 | int err = MAILSMTP_NO_ERROR; |
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 | ||
295 | void SMTPwrapper::disc_server() | 301 | void 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 | ||
304 | int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size ) | 310 | int 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)); |
317 | result = 0; | 323 | result = 0; |
318 | } | 324 | } |
319 | } else { | 325 | } else { |
320 | result = 0; | 326 | result = 0; |
321 | } | 327 | } |
322 | 328 | ||
323 | if (!result) { | 329 | if (!result) { |
324 | storeFailedMail(data,size,failuretext); | 330 | storeFailedMail(data,size,failuretext); |
325 | } else { | 331 | } else { |
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 | ||
332 | bool SMTPwrapper::sendMail(const Opie::Core::OSmartPointer<Mail>&mail,bool later ) | 338 | bool 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 | ||
354 | int SMTPwrapper::sendQueuedMail(AbstractMail*wrap,const RecMailP&which) { | 364 | int 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 ); |
374 | from = getFrom(ffrom); | 384 | from = getFrom(ffrom); |
375 | 385 | ||
376 | if (rcpts && from) { | 386 | if (rcpts && from) { |
377 | res = smtpSend(from,rcpts,data->Content(),data->Length()); | 387 | res = smtpSend(from,rcpts,data->Content(),data->Length()); |
378 | } | 388 | } |
379 | if (fields) { | 389 | if (fields) { |
380 | mailimf_fields_free(fields); | 390 | mailimf_fields_free(fields); |
381 | fields = 0; | 391 | fields = 0; |
382 | } | 392 | } |
383 | if (data) { | 393 | if (data) { |
384 | delete data; | 394 | delete data; |
385 | } | 395 | } |
386 | if (from) { | 396 | if (from) { |
387 | free(from); | 397 | free(from); |
388 | } | 398 | } |
389 | if (rcpts) { | 399 | if (rcpts) { |
390 | smtp_address_list_free( rcpts ); | 400 | smtp_address_list_free( rcpts ); |
391 | } | 401 | } |
392 | return res; | 402 | return res; |
393 | } | 403 | } |
394 | 404 | ||
395 | /* this is a special fun */ | 405 | /* this is a special fun */ |
396 | bool SMTPwrapper::flushOutbox() { | 406 | bool SMTPwrapper::flushOutbox() { |
397 | bool returnValue = true; | 407 | bool returnValue = true; |
398 | 408 | ||
399 | ; // odebug << "Sending the queue" << oendl; | 409 | ; // odebug << "Sending the queue" << oendl; |
400 | if (!m_SmtpAccount) { | 410 | if (!m_SmtpAccount) { |
401 | ; // odebug << "No smtp account given" << oendl; | 411 | ; // odebug << "No smtp account given" << oendl; |
402 | return false; | 412 | return false; |
403 | } | 413 | } |
404 | 414 | ||
405 | bool reset_user_value = false; | 415 | bool reset_user_value = false; |
406 | QString localfolders = AbstractMail::defaultLocalfolder(); | 416 | QString localfolders = AbstractMail::defaultLocalfolder(); |
407 | AbstractMail*wrap = AbstractMail::getWrapper(localfolders); | 417 | AbstractMail*wrap = AbstractMail::getWrapper(localfolders); |
408 | if (!wrap) { | 418 | if (!wrap) { |
409 | ; // odebug << "memory error" << oendl; | 419 | ; // odebug << "memory error" << oendl; |
410 | return false; | 420 | return false; |
411 | } | 421 | } |
412 | QString oldPw, oldUser; | 422 | QString oldPw, oldUser; |
413 | QValueList<RecMailP> mailsToSend; | 423 | QValueList<RecMailP> mailsToSend; |
414 | QValueList<RecMailP> mailsToRemove; | 424 | QValueList<RecMailP> mailsToRemove; |
415 | QString mbox("Outgoing"); | 425 | QString mbox("Outgoing"); |
416 | wrap->listMessages(mbox,mailsToSend); | 426 | wrap->listMessages(mbox,mailsToSend); |
417 | if (mailsToSend.count()==0) { | 427 | if (mailsToSend.count()==0) { |
418 | delete wrap; | 428 | delete wrap; |
419 | ; // odebug << "No mails to send" << oendl; | 429 | ; // odebug << "No mails to send" << oendl; |
420 | return false; | 430 | return false; |
421 | } | 431 | } |
422 | 432 | ||
423 | oldPw = m_SmtpAccount->getPassword(); | 433 | oldPw = m_SmtpAccount->getPassword(); |
424 | oldUser = m_SmtpAccount->getUser(); | 434 | oldUser = m_SmtpAccount->getUser(); |
425 | if (m_SmtpAccount->getLogin() && (m_SmtpAccount->getUser().isEmpty() || m_SmtpAccount->getPassword().isEmpty()) ) { | 435 | if (m_SmtpAccount->getLogin() && (m_SmtpAccount->getUser().isEmpty() || m_SmtpAccount->getPassword().isEmpty()) ) { |
426 | // get'em | 436 | // get'em |
427 | QString user,pass; | 437 | QString user,pass; |
428 | LoginDialog login( m_SmtpAccount->getUser(), m_SmtpAccount->getPassword(), NULL, 0, true ); | 438 | LoginDialog login( m_SmtpAccount->getUser(), m_SmtpAccount->getPassword(), NULL, 0, true ); |
429 | login.show(); | 439 | login.show(); |
430 | if ( QDialog::Accepted == login.exec() ) { | 440 | if ( QDialog::Accepted == login.exec() ) { |
431 | // ok | 441 | // ok |
432 | user = login.getUser().latin1(); | 442 | user = login.getUser().latin1(); |
433 | pass = login.getPassword().latin1(); | 443 | pass = login.getPassword().latin1(); |
434 | reset_user_value = true; | 444 | reset_user_value = true; |
435 | m_SmtpAccount->setUser(user); | 445 | m_SmtpAccount->setUser(user); |
436 | m_SmtpAccount->setPassword(pass); | 446 | m_SmtpAccount->setPassword(pass); |
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 | } |