Add script to split mbox exported by GMail.
GMail exports the entire account to a single mbox file. This script splits it into multiple mbox files according to the labels.
This commit is contained in:
parent
c3123ff07c
commit
eb39abfd96
1 changed files with 60 additions and 0 deletions
60
misc/sort-mail.py
Executable file
60
misc/sort-mail.py
Executable file
|
@ -0,0 +1,60 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
from mailbox import mbox
|
||||||
|
|
||||||
|
targets = [
|
||||||
|
"28 Ellesmere Road Purchase",
|
||||||
|
"3-mobile",
|
||||||
|
"Anglian Windows",
|
||||||
|
"Clojure",
|
||||||
|
"Conveyancing Quotes",
|
||||||
|
"CTCCambridge",
|
||||||
|
"CTCCambridgeRoutes",
|
||||||
|
"CTCOxford",
|
||||||
|
"Dad's Estate",
|
||||||
|
"Dad's Memorial",
|
||||||
|
"Dad's Memorial Service",
|
||||||
|
"Facebook",
|
||||||
|
"Golang",
|
||||||
|
"GreenMetropolis",
|
||||||
|
"LibDems",
|
||||||
|
"Nationwide",
|
||||||
|
"OkCupid",
|
||||||
|
"Pseudospam",
|
||||||
|
"Riverford",
|
||||||
|
"RussianDatingScam",
|
||||||
|
"Sanger",
|
||||||
|
"SmileBanking",
|
||||||
|
"UKUUG",
|
||||||
|
"Virgin Wines",
|
||||||
|
"Personal",
|
||||||
|
"Sent",
|
||||||
|
"Inbox",
|
||||||
|
"Archived",
|
||||||
|
"Spam",
|
||||||
|
"Bin",
|
||||||
|
]
|
||||||
|
|
||||||
|
def target(m):
|
||||||
|
if "X-Gmail-Labels" in m:
|
||||||
|
labels = m["X-Gmail-Labels"].split(",")
|
||||||
|
for t in targets:
|
||||||
|
if t in labels:
|
||||||
|
return t
|
||||||
|
return "Uncategorized"
|
||||||
|
|
||||||
|
|
||||||
|
incoming = mbox("/home/ray/Mail/Gmail.mbox", create=False)
|
||||||
|
|
||||||
|
destinations = {}
|
||||||
|
|
||||||
|
n = 0
|
||||||
|
for m in incoming:
|
||||||
|
t = target(m)
|
||||||
|
if t not in destinations:
|
||||||
|
destinations[t] = mbox(f"/home/ray/Mail/GMail/{t}", create=True)
|
||||||
|
destinations[t].add(m)
|
||||||
|
|
||||||
|
for d in destinations:
|
||||||
|
d.flush()
|
||||||
|
|
Loading…
Reference in a new issue