summaryrefslogtreecommitdiff
path: root/src/leap/mail/mail.py
AgeCommit message (Collapse)Author
2016-03-24[bug] Fix unread mails notificationKali Kaneko
this one was missing after the events refactor. the bug is that client was discarding the first parameter, assuming it was the userid.
2016-03-24[bug] let the inbox used in IncomingMail notify any subscribed MailboxKali Kaneko
the mail service uses an Account object created from scratch, so it wasn't sharing the collections mapping with the other Account object that is created in the IMAP Service. I make it a class attribute to allow mailbox notifications. However, with the transition to a single service tree, this class attribute can again become a class instance. This is somehow related to a PR proposed recently by cz8s in pixelated team: https://github.com/leapcode/leap_mail/pull/228 However, I'm reluctant to re-use IMAPMailbox instances, since they represent concurrent views over the same collection. I believe that sharing the same underlying collection might be enough.
2015-09-23[refactor] avoid circular import due to rfc3156Kali Kaneko
2015-09-23[bug] Make _collection_mapping a instance variableFolker Bernitt
As a class variable multiple account instances share mailboxes which is bad if its different users or tests
2015-09-16[feat] use async events apiKali Kaneko
in this way, we're using twisted reactor instead of having another thread with zmq's own copy of tornado ioloop. Resolves: #7274
2015-07-21Fixed all the pep8 warnings in the codeBruno Wagner
2015-07-13[feature] add very basic support for message sequence numbersKali Kaneko
this is just the bare minimum implementation of MSN (message sequence numbers). It is not enough feature-wise, but I'm doing it now just to support testing with the default imap client that we're using with the regression tests.
2015-07-13[bug] do not raise if the pending insert cannot be removedKali Kaneko
2015-07-13[bug] fix keyerror when inserting msg on pending_inserts dictKali Kaneko
The decission to index the pending_inserts dict by message-id is a bit brittle. I assume any well-formed message in the RealWorld (tm) will have this header, but many samples used in the tests will break this assumption.
2015-07-13[bug] workaround for off-by-one error on nested multipartKali Kaneko
For some reason that I haven't discovered yet, nested multipart is hitting an off-by-one error (that had been wrongly ammended in a previous commit, breaking many other cases but fixing the particular Mail.app sample I was working with). This is just a temporary hack to make all the current regression tests happy, but further investigation is needed to discover the cause of the off-by-one part retrieval solved and correctly documented.
2015-07-13[bug] fix the rendering of nested multipartKali Kaneko
This commit fix a very simplistic and until now broken handling of nested multipart that went undetected due to the structure of the mails used in tests until now. Incidentally, the way that Mail.app structures attachments made this bug noticeable. There was also an off-by-one indexing error when retrieving the subpart message for a given subpart. Be aware that the current implementation will only handle correctly 2 levels of multipart nesting. Extending beyond in a more generic way will need further work. Closes: #7244
2015-07-03[bug] notify copied emailsRuben Pollan
When copying emails there was not notification produced, that makes thunderbird to see messages moved between folders until it gets restarted. Now the MaillCollection copy does notify the listeners. * Resolves: #7158
2015-07-02[bug] return the message uid after add it to the collectionRuben Pollan
MessageCollection.add_msg was not returning the uid of the message added making the incoming service not deleting the emails from the incoming queue. * Related: #7158
2015-06-29[bug] allow mailbox to be notified of collection changesKali Kaneko
in a previous refactor, we decoupled the incoming mail service from the IMAP layer. However, this left the IMAPMailbox unable to react to changes in the underlying collection when a new message is inserted. in this commit, we add a Listener mechanism to the collection itself, so that IMAPMailbox (and any other object that uses it) can subscribe to changes on the number of messages of the collection. Resolves: #7191 Releases: 0.4.0
2015-06-25[bug] avoid duplication of copies in draft folderKali Kaneko
Although this draft-saving feature seems to be somehow brittle, since it breaks from time to time, the causes are different and subtle on each case. This time the bug is related to having the notify_just_mdoc (or fast_notifies as I'm tempted to call it in the future for more clarity) set to True by default in the APPENDS. Fast notifies break the "save draft" functionality because what Thunderbird does is an Append of the newest message, followed by deletion of the old message and a SEARCH by Message-ID. For this we need the headers-doc to be already inserted in the store. Since the fast-notify makes a *big* difference in terms of insertion times for serialized appends, I've opted for using a heuristic for detecting if it's the case of a Draft message, using a mozilla-specific header. If this is found, we set the notify_just_mdoc unconditionally to False. We'll deal with other MUAs on its due time. Releases: 0.4.0
2015-06-25[bug] saving message to drafts folder hangsKali Kaneko
the bug consist on a fetch-while-pending-inserts hanging. the pending insert dict was not being cleaned up because the lookup for the Message-Id *is* case-sensitive (in the headers dict). by using a temporary all-keys-lowercase dict the lookup can be performed right, and the fetch returns successfully. at this point there's still a pending bug with Drafts, and it is that the new version is inserted but the MUA (TB) doesn't hide the older version (although a Delete flag is added). Resolves: #7189, #7190 Releases: 0.4.0
2015-06-22[bug] fixes for display attachments and move between folders0.4.0-alphaKali Kaneko
- Add errback handling to catch properly errors that were not allowing the complete insertion of the parts for a given message. Fixes blank attachments and moving of messages to different folders. - Force overwritting of mdoc when it is a copy. This was avoiding a message to be copied back to a folder from where it already had been copied to another (since the mdoc was already existing there, with the same doc_id, which was forbidding the creation of the new one). This case also needs special care in the indexer, since we have to delete the old hash entry first. Closes: #7178, #7158
2015-06-05[bug] prevent missing uid table exceptionKali Kaneko
2015-06-05[refactor] move hooks to accountKali Kaneko
2015-06-05[feature] post-sync mail processing hooksKali Kaneko
using the new soledad plugin capablity, mail hooks to the post-sync event by subscribing to the Meta-Doc type of documents. In this way, we can create the uid tables and the uid entries needed to keep local indexes for mail that has been processed in another instance. however, this won't prevent a conflict if a given mail is received and processed in two different instances. that is a problem that we still have to deal with. Resolves: #6996 Releases: 0.4.0
2015-05-14[feat] adapt to new events api on commonIvan Alejandro
- Related: #6359
2015-03-30[bug] fix early append notificationKali Kaneko
There's a workaround for "slow" APPENDS to an inbox, and it is that we have a flag to allow returning early when JUST the mdoc (the meta-document) has been written. However, this was givin a problem when doing a FETCH right after an APPEND (with notify_just_mdoc=True) has been done. This commit fixes it by making the FETCH command first check if there's an ongoing pending write, and queueing itself right after the write queue has been completed. This fixes the testFullAppend regression. Releases: 0.4.0
2015-03-30[bug] move creation_ts to mail generic apiKali Kaneko
This also fixes a bug in which INBOX wasn't being given a creation timestamp, and therefore always being identified with the same UIDVALIDITY = 1, which could be confusing MUAs since this value should be unique, and it's relied on to uniquely identifying a given message. Releases: 0.4.0
2015-03-30[bug] re-add fix for multiple headersKali Kaneko
This fix stores as multi-line headers that are repeated, and that were being discarded when storing them in a regular dict. It had been removed during the last refactor. I also store headers now as a case-insensitive dict, which solves other problems with the implementation of the twisted imap. Releases: 0.4.0
2015-03-23[bug] report the correct size for mime partsKali Kaneko
The MIME size is the size of the body, w/o counting the headers. Releases: 0.4.0
2015-03-05[bug] catch null doc_id error, and log it as suchKali Kaneko
Catch null doc_id so that we don't interrupt server This bug needs further investigation Related: #6769 ?
2015-03-05[feature] Keep mapping of collectionsKali Kaneko
it is a weakref dictionary so that the collections can be garbage collected when out of scope. Releases: 0.4.0
2015-03-03[bug] Fix testExpunge testsKali Kaneko
this test was failing randomly because we were returning the deferred before all the documents were saved into soledad store. changed also the delete_msg deferred chaining for better readability. Releases: 0.9.0
2015-03-03pass date explicitely, fix partial_append testKali Kaneko
it is interpreted as "tags" otherwise.
2015-03-03fix rename_mailbox implementation, make test passKali Kaneko
2015-03-03fix delete_msg testKali Kaneko
bug: delete_msg was still passing the mbox_name instead of the mbox_uuid as it should.
2015-02-25undo duplication of add_msg method in mail apiKali Kaneko
* Set the internal date from within the incoming mail service.
2015-02-24move notifications cb to mail moduleKali Kaneko
2015-02-23factor out unicode formattingKali Kaneko
2015-02-20fix broken multipart attachment renderingKali Kaneko
2015-02-18Use MessageCollection instead of IMAPMailbox in IncomingMailRuben Pollan
2015-02-11append/copy performance improvementKali Kaneko
2015-02-11implement copy interfaceKali Kaneko
2015-02-11return empty string if we couldn't find bodyKali Kaneko
so the server doesn't choke.
2015-02-11save drafts: search by msg-idKali Kaneko
2015-02-11Fix recent/unseen notificationsKali Kaneko
2015-02-11re-add support for basic multipart messagesKali Kaneko
2015-02-11lots of little fixes after meskio's reviewKali Kaneko
mostly having to do with poor, missing or outdated documentation, naming of confusing things and reordering of code blocks for improved readability.
2015-02-11imap: implement setting of message flagsKali Kaneko
2015-02-11imap: complete FETCH implementationKali Kaneko
2015-02-11update mail/imap testsKali Kaneko
2015-02-11Refactor fetch into leap.mail.incoming IServiceRuben Pollan
2015-02-11Complete IMAP implementation, update testsKali Kaneko
2015-02-11Use mailbox uuidsKali Kaneko
The previous implementation is naive, since it imposes a burden when renaming mailboxes. We're using uuids in the local uid tables instead, which is more cryptic but way more efficient. * receive mbox uuid instead of name * use mailbox uuid in identifiers
2015-02-11tests for mail.mail module: AccountKali Kaneko