diff options
author | Dmitry Isaikin <isaikin-dmitry@yandex.ru> | 2016-04-22 20:14:43 +0300 |
---|---|---|
committer | HoĆ V. DINH <dinh.viet.hoa@gmail.com> | 2016-04-22 10:14:43 -0700 |
commit | 4b17bcefb118491da76be8bc9b5b4083b4577f6d (patch) | |
tree | 8af8b8a9efa792a9a86e0b0fb7ef55b09a00570d /src | |
parent | 983184224ddef74a1b95538abb971f073379c535 (diff) |
Fix for imap servers which use non-standard name for inbox folder (#1406)
Diffstat (limited to 'src')
-rwxr-xr-x | src/core/imap/MCIMAPSession.cpp | 22 |
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; + } } } |