aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Dmitry Isaikin <isaikin-dmitry@yandex.ru>2016-04-22 20:14:43 +0300
committerGravatar HoĆ  V. DINH <dinh.viet.hoa@gmail.com>2016-04-22 10:14:43 -0700
commit4b17bcefb118491da76be8bc9b5b4083b4577f6d (patch)
tree8af8b8a9efa792a9a86e0b0fb7ef55b09a00570d /src
parent983184224ddef74a1b95538abb971f073379c535 (diff)
Fix for imap servers which use non-standard name for inbox folder (#1406)
Diffstat (limited to 'src')
-rwxr-xr-xsrc/core/imap/MCIMAPSession.cpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/core/imap/MCIMAPSession.cpp b/src/core/imap/MCIMAPSession.cpp
index bd942a09..3d3830cc 100755
--- a/src/core/imap/MCIMAPSession.cpp
+++ b/src/core/imap/MCIMAPSession.cpp
@@ -1468,11 +1468,23 @@ Array * /* IMAPFolder */ IMAPSession::fetchAllFolders(ErrorCode * pError)
}
if (!hasInbox) {
- r = mailimap_list(mImap, "", "INBOX", &imap_folders);
- Array * inboxResult = resultsWithError(r, imap_folders, pError);
- if (* pError == ErrorConnection || * pError == ErrorParse)
- mShouldDisconnect = true;
- result->addObjectsFromArray(inboxResult);
+ mc_foreacharray(IMAPFolder, folder, result) {
+ if (folder->flags() & IMAPFolderFlagInbox) {
+ // some mail providers use non-standart name for inbox folder
+ hasInbox = true;
+ folder->setPath(MCSTR("INBOX"));
+ break;
+ }
+ }
+
+ if (!hasInbox) {
+ r = mailimap_list(mImap, "", "INBOX", &imap_folders);
+ Array * inboxResult = resultsWithError(r, imap_folders, pError);
+ if (* pError == ErrorConnection || * pError == ErrorParse)
+ mShouldDisconnect = true;
+ result->addObjectsFromArray(inboxResult);
+ hasInbox = true;
+ }
}
}