diff --git a/libksieve/ksieveui/util/util.cpp b/libksieve/ksieveui/util/util.cpp --- a/libksieve/ksieveui/util/util.cpp +++ b/libksieve/ksieveui/util/util.cpp @@ -114,9 +114,20 @@ } else { KUrl u( interface->sieveAlternateUrl() ); const QString resultSafety = interface->safety(); + + if (u.protocol().isEmpty()) { + u.clear(); + u.setScheme(QLatin1String("sieve")); + u.setHost(interface->sieveAlternateUrl()); + } + if ( u.protocol().toLower() == QLatin1String("sieve") && ( resultSafety == QLatin1String("None") ) && u.queryItem(QLatin1String("x-allow-unencrypted")).isEmpty() ) u.addQueryItem( QLatin1String("x-allow-unencrypted"), QLatin1String("true") ); + if (u.port() == -1) { + u.setPort(4190); + } + const QString resultCustomAuthentication = interface->sieveCustomAuthentification(); if (resultCustomAuthentication == QLatin1String("ImapUserPassword")) { u.setUserName( interface->userName() ); @@ -127,6 +138,32 @@ pwd = replyPass; } u.setPassword( pwd ); + QString authStr; + switch( interface->authentication() ) { + case MailTransport::Transport::EnumAuthenticationType::CLEAR: + case MailTransport::Transport::EnumAuthenticationType::PLAIN: + authStr = QLatin1String("PLAIN"); + break; + case MailTransport::Transport::EnumAuthenticationType::LOGIN: + authStr = QLatin1String("LOGIN"); + break; + case MailTransport::Transport::EnumAuthenticationType::CRAM_MD5: + authStr = QLatin1String("CRAM-MD5"); + break; + case MailTransport::Transport::EnumAuthenticationType::DIGEST_MD5: + authStr = QLatin1String("DIGEST-MD5"); + break; + case MailTransport::Transport::EnumAuthenticationType::GSSAPI: + authStr = QLatin1String("GSSAPI"); + break; + case MailTransport::Transport::EnumAuthenticationType::ANONYMOUS: + authStr = QLatin1String("ANONYMOUS"); + break; + default: + authStr = QLatin1String("PLAIN"); + break; + } + u.addQueryItem( QLatin1String("x-mech"), authStr ); } else if (resultCustomAuthentication == QLatin1String("CustomUserPassword")) { QDBusInterface resourceSettings( QLatin1String( "org.freedesktop.Akonadi.Resource." ) + identifier, QLatin1String("/Settings"), QLatin1String("org.kde.Akonadi.Imap.Wallet") ); QString pwd;