PyThunderbird
OsProject
OsProject | |
---|---|
edit | |
id | pyThunderbird |
state | active |
owner | WolfgangFahl |
title | pyThunderbird |
url | https://github.com/WolfgangFahl/pyThunderbird |
version | 0.1.0 |
description | |
date | 2023-12-01 |
since | 2020-10-24 |
until |
Motivation
Thunderbird uses mailbox format and an sqlite database for keeping track of the mails. How can this setup be accessed with Python?
Installation
pip install pyThunderbird
# alternatively if your pip is not a python3 pip
pip3 install pyThunderbird
# local install from source directory of pyThunderbird
pip install .
upgrade
pip install pyThunderbird -U
# alternatively if your pip is not a python3 pip
pip3 install pyThunderbird -U
Usage
tbmail -h
usage: tbmail [-h] [-a] [-c] [-d] [--debugServer DEBUGSERVER]
[--debugPort DEBUGPORT] [--debugRemotePath DEBUGREMOTEPATH]
[--debugLocalPath DEBUGLOCALPATH] [-l] [-i INPUT] [-rol]
[--host HOST] [--port PORT] [-s] [-V] [-u USER] [-m MAILID]
[-ul USER_LIST [USER_LIST ...]] [-ci] [-f] [-v]
python based access to Thunderbird mail
options:
-h, --help show this help message and exit
-a, --about show about info [default: False]
-c, --client start client [default: False]
-d, --debug show debug info [default: False]
--debugServer DEBUGSERVER
remote debug Server
--debugPort DEBUGPORT
remote debug Port
--debugRemotePath DEBUGREMOTEPATH
remote debug Server path mapping - remotePath - path on
debug server
--debugLocalPath DEBUGLOCALPATH
remote debug Server path mapping - localPath - path on
machine where python runs
-l, --local run with local file system access [default: False]
-i INPUT, --input INPUT
input file
-rol, --render_on_load
render on load [default: False]
--host HOST the host to serve / listen from [default: localhost]
--port PORT the port to serve from [default: 8482]
-s, --serve start webserver [default: False]
-V, --version show program's version number and exit
-u USER, --user USER id of the user
-m MAILID, --mailid MAILID
id of the mail to retrieve
-ul USER_LIST [USER_LIST ...], --user-list USER_LIST [USER_LIST ...]
-ci, --create-index create an alternative index for the given users's
Thunderbird mailarchive
-f, --force force the creation of a new index even if one already
exists
-v, --verbose show verbose infos e.g. on startup [default: False]
Configuration
$HOME/.thunderbird.yaml
The yaml file has two entries per user
MacOS Example
joe:
db: /Users/joe/Library/Thunderbird/Profiles/klm97bfn.default/gloda.sqlite
profile: /Users/wf/Library/Thunderbird/Profiles/klm97bfn.default
kathy:
db: /Users/kathy/Library/Thunderbird/Profiles/war97k3r.default/gloda.sqlite
profile: /Users/kathy/Library/Thunderbird/Profiles/war97k3r.default
Linux example
in this example the server runs from an rsync'ed backup of the thunderbird files of the different users
user123:
db: /hd/diskAlpha/backup/siteAlpha.com/user123/Library/Thunderbird/Profiles/randomID1.default/global-messages-db.sqlite
profile: /hd/diskAlpha/backup/siteAlpha.com/user123/Library/Thunderbird/Profiles/randomID1.default
user456:
db: /hd/diskBeta/backup/siteBeta.com/user456/Library/Thunderbird/Profiles/randomID2.default/global-messages-db.sqlite
profile: /hd/diskBeta/backup/siteBeta.com/user456/Library/Thunderbird/Profiles/randomID2.default
Relevant Libraries
Links
- https://stackoverflow.com/questions/21625906/access-thunderbird-emails-by-python
- https://stackoverflow.com/questions/60938536/decoding-mail-subject-thunderbird-in-python-3-x
- https://medium.com/shanes-tech-tips/offlineimap-to-thunderbird-152bb02286f
- https://groups.google.com/g/comp.lang.python/c/sp-3_ddmgbA?pli=1
- https://wlsoft.de/?q=node/369
- https://github.com/rooper/thunderbirdscraper/blob/master/run.py
- https://stackoverflow.com/questions/26567843/reading-the-mail-content-of-an-mbox-file-using-python-mailbox/26567942