diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -75,7 +75,7 @@ set(KMAILTRANSPORT_LIB_VERSION "5.11.40") set(CALENDARUTILS_LIB_VERSION "5.11.40") set(KDAV_LIB_VERSION "5.11.40") -set(KIMAP_LIB_VERSION "5.11.40") +set(KIMAP_LIB_VERSION "5.11.41") set(KMBOX_LIB_VERSION "5.11.40") set(AKONADICALENDAR_LIB_VERSION "5.11.40") set(KONTACTINTERFACE_LIB_VERSION "5.11.40") diff --git a/resources/imap/imapaccount.h b/resources/imap/imapaccount.h --- a/resources/imap/imapaccount.h +++ b/resources/imap/imapaccount.h @@ -55,12 +55,16 @@ void setTimeout(int timeout); int timeout() const; + void setUseNetworkProxy(bool useProxy); + bool useNetworkProxy() const; + private: QString m_name; QString m_server; quint16 m_port = 0; QString m_userName; int m_timeout = 30; + bool m_useProxy = false; KIMAP::LoginJob::EncryptionMode m_encryption; KIMAP::LoginJob::AuthenticationMode m_authentication; bool m_subscriptionEnabled = false; diff --git a/resources/imap/imapaccount.cpp b/resources/imap/imapaccount.cpp --- a/resources/imap/imapaccount.cpp +++ b/resources/imap/imapaccount.cpp @@ -104,3 +104,13 @@ { return m_timeout; } + +void ImapAccount::setUseNetworkProxy(bool useProxy) +{ + m_useProxy = useProxy; +} + +bool ImapAccount::useNetworkProxy() const +{ + return m_useProxy; +} diff --git a/resources/imap/imapresource.kcfg b/resources/imap/imapresource.kcfg --- a/resources/imap/imapresource.kcfg +++ b/resources/imap/imapresource.kcfg @@ -34,6 +34,11 @@ 30 + + +​ If checked, the system proxy settings will be used to connect to the mail server. + false + diff --git a/resources/imap/sessionpool.cpp b/resources/imap/sessionpool.cpp --- a/resources/imap/sessionpool.cpp +++ b/resources/imap/sessionpool.cpp @@ -365,6 +365,7 @@ QObject::connect(session, &QObject::destroyed, this, &SessionPool::onSessionDestroyed); session->setUiProxy(m_sessionUiProxy); session->setTimeout(m_account->timeout()); + session->setUseNetworkProxy(m_account->useNetworkProxy()); m_connectingPool << session; } diff --git a/resources/imap/settings.cpp b/resources/imap/settings.cpp --- a/resources/imap/settings.cpp +++ b/resources/imap/settings.cpp @@ -240,6 +240,7 @@ account->setUserName(userName()); account->setSubscriptionEnabled(subscriptionEnabled()); + account->setUseNetworkProxy(useProxy()); const QString encryption = safety(); if (encryption == QLatin1String("SSL")) { diff --git a/resources/imap/setupserver.cpp b/resources/imap/setupserver.cpp --- a/resources/imap/setupserver.cpp +++ b/resources/imap/setupserver.cpp @@ -317,6 +317,7 @@ m_parentResource->settings()->setSubscriptionEnabled(m_ui->subscriptionEnabled->isChecked()); m_parentResource->settings()->setIntervalCheckTime(m_ui->checkInterval->value()); m_parentResource->settings()->setDisconnectedModeEnabled(m_ui->disconnectedModeEnabled->isChecked()); + m_parentResource->settings()->setUseProxy(m_ui->useProxyCheck->isChecked()); MailTransport::Transport::EnumAuthenticationType::type alternateAuthtype = getCurrentAuthMode(m_ui->authenticationAlternateCombo); qCDebug(IMAPRESOURCE_LOG) << "saving Alternate server sieve auth mode: " << authenticationModeString(alternateAuthtype); @@ -433,6 +434,7 @@ m_ui->checkInterval->setValue(m_parentResource->settings()->intervalCheckTime()); m_ui->disconnectedModeEnabled->setChecked(m_parentResource->settings()->disconnectedModeEnabled()); + m_ui->useProxyCheck->setChecked(m_parentResource->settings()->useProxy()); m_ui->managesieveCheck->setChecked(m_parentResource->settings()->sieveSupport()); m_ui->sameConfigCheck->setChecked(m_parentResource->settings()->sieveReuseConfig()); diff --git a/resources/imap/setupserverview_desktop.ui b/resources/imap/setupserverview_desktop.ui --- a/resources/imap/setupserverview_desktop.ui +++ b/resources/imap/setupserverview_desktop.ui @@ -605,6 +605,13 @@ + + + + Connect using the system proxy settings + + +