|Summary:||read -> unread email status changes on server side are never synchronized for IMAP resource|
|Product:||[Frameworks and Libraries] Akonadi||Reporter:||Till Schäfer <till2.schaefer>|
|Component:||IMAP resource||Assignee:||Christian Mollekopf <chrigi_1>|
|Severity:||normal||CC:||kdenis, kdepim-bugs, vkrause|
|Latest Commit:||https://commits.kde.org/akonadi/e49f49a1eb616b51c2286853961fe5bcaa4fe758||Version Fixed In:||5.5.1|
Description Till Schäfer 2017-01-16 16:12:21 UTC
When an email status changes from read to unread on the server side, this status change is never applied to akonadi storage (i.e., the mail is still in read status). I have done a manual folder update (f5) and restarted akonadi, but both action did have no effect. I have checked this in akonadiconsole (mail is still flagged "\SEEN"). Thus this is not a kmail bug. The bug was tested and reproduced on three different akonadi installations (gentoo) with the same imap server. The status gets synced correctly with other mail clients such as thunderbird and k9-mail. The bug is always reproducible.
Comment 1 Denis Kurz 2017-01-16 16:28:37 UTC
Confirmed. I marked a read message to unread in K9 Mail, and tried to convince KMail of the updated state by reloading the folder, restarting Kontact, akonadictl restart. K9 Mail as well as the webmailer still show it as unread, so the state wasn't reset automatically to read by Akonadi. Even if I move the mail to another folder in KMail, it still shows the message as read, while K9 Mail and the webmailer show it as unread. KDE Applications 16.12.1, Frameworks 5.30.
Comment 2 Till Schäfer 2017-01-16 16:41:20 UTC
*** Bug 358313 has been marked as a duplicate of this bug. ***
Comment 3 Daniel Vrátil 2017-04-19 00:33:40 UTC
Git commit e49f49a1eb616b51c2286853961fe5bcaa4fe758 by Daniel Vrátil. Committed on 19/04/2017 at 00:30. Pushed by dvratil into branch 'Applications/17.04'. Fix clearing Item flags For instance when an email is marked as unread on an IMAP server, it means that the \\SEEN flag is removed. If this was the only flag set on the email, then Akonadi::ItemSync will end up calling Akonadi::Item::setFlags() with an empty QSet. When the AKAPPEND handler is in the MERGE mode and runs into an empty Flags field in the CreateItemCommand it fallsback to checking AddedFlags and RemovedFlags fields, but those are empty too. Akonadi::Item internally tracks when setFlags() is called, even with an empty QSet through flagsOverwritten flag. With this change the flag is sent as part of the command to the server and the AKAPPEND handler now falls back to AddedFlags/RemovedFlags fields only if the flag is false. This fixes syncing email flags when email state changes from read to unread on IMAP, but due to how IMAP emails are synced this will only affect future changes and will not sync existing out-of-sync emails. FIXED-IN: 5.5.1 M +3 -1 autotests/private/protocoltest.cpp M +4 -1 src/core/jobs/itemcreatejob.cpp M +21 -4 src/private/protocol.cpp M +2 -0 src/private/protocol_p.h M +1 -1 src/server/handler/akappend.cpp https://commits.kde.org/akonadi/e49f49a1eb616b51c2286853961fe5bcaa4fe758