summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2012-12-08 18:18:50 +0100
committerJason A. Donenfeld <Jason@zx2c4.com>2012-12-08 18:18:50 +0100
commit2738cc9a7060b7a604e5f3a9eccae21b7e194194 (patch)
treeeba74724de1665e866fd4fee1785b858b4486067
parentAggressive directory creation. (diff)
downloadgmail-notmuch-2738cc9a7060b7a604e5f3a9eccae21b7e194194.tar.xz
gmail-notmuch-2738cc9a7060b7a604e5f3a9eccae21b7e194194.zip
Find all mail dynamically.
-rwxr-xr-xgmail-notmuch.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/gmail-notmuch.py b/gmail-notmuch.py
index 8087795..06a4cf8 100755
--- a/gmail-notmuch.py
+++ b/gmail-notmuch.py
@@ -47,6 +47,7 @@ def main():
parser.error("Username and password are required.")
if "@" not in options.username:
options.username += "@gmail.com"
+
try:
# Create should be True, but there's a bug at the moment.
database = notmuch.Database(None, False, notmuch.Database.MODE.READ_WRITE)
@@ -94,7 +95,18 @@ def login(options):
imap.debug = 10
imap.login(options.username, options.password)
print("Selecting all mail...")
- typ, data = imap.select("\"[Gmail]/All Mail\"", True)
+ typ, data = imap.xatom("XLIST", "", "*")
+ if typ != "OK":
+ sys.exit("Could not discover all mail.")
+ allmail = None
+ for label in imap.untagged_responses["XLIST"]:
+ if b"\\AllMail" in label:
+ last_quote = label.rfind("\"")
+ penultimate_quote = label.rfind("\"", 0, last_quote) + 1
+ allmail = label[penultimate_quote:last_quote]
+ if allmail is None:
+ sys.exit("Could not parse all mail.")
+ typ, data = imap.select("\"" + allmail + "\"", True)
if typ != "OK":
sys.exit("Could not select all mail.")
return imap, int(data[0])