I want to read mails from a mbox file and do some action based on that. I don't want to write/modify the mbox file but it will be modified by another process (Mostly adding new mails).
I am reading this documentation. http://docs.python.org/library/mailbox.html#mailbox.mbox
But I don't understand the following
- Should I call lock() before reading the mail? (I am not writing to the file)
- Is there anyway I can get a callback when other process (thunderbird) modifies the file?
- Is the changes in the file reflected in the mbox object? I mean, after I create the mbox object, if a new mail is added to the file, will I access the message using the object? Or should I create a new object again?
PS: I am not allowed to install any plugins of thunderbird:(
No need to call
Mailbox.lock()
when you don't modify the mbox. A quote from the documentation ofMailbox.lock()
(emphasis my own):Notification on file changes is out of the scope of the mailbox module. On Linux systems you can use pyinotify to get this functionality.
This is also answered in the documentation:
In short, you need to create a new
Mailbox
instance, after the mbox file has changed.