|
8 | 8 | |
9 | 9 | password = "yourpassword" |
10 | 10 |
|
| 11 | + |
| 12 | +def clean(text): |
| 13 | + # clean text for creating a folder |
| 14 | + return "".join(c if c.isalnum() else "_" for c in text) |
| 15 | + |
11 | 16 | # number of top emails to fetch |
12 | 17 | N = 3 |
13 | 18 |
|
|
31 | 36 | # parse a bytes email into a message object |
32 | 37 | msg = email.message_from_bytes(response[1]) |
33 | 38 | # decode the email subject |
34 | | - subject = decode_header(msg["Subject"])[0][0] |
| 39 | + subject, encoding = decode_header(msg["Subject"])[0] |
35 | 40 | if isinstance(subject, bytes): |
36 | 41 | # if it's a bytes, decode to str |
37 | | - subject = subject.decode() |
| 42 | + subject = subject.decode(encoding) |
38 | 43 | # decode email sender |
39 | 44 | From, encoding = decode_header(msg.get("From"))[0] |
40 | 45 | if isinstance(From, bytes): |
|
60 | 65 | # download attachment |
61 | 66 | filename = part.get_filename() |
62 | 67 | if filename: |
63 | | - if not os.path.isdir(subject): |
| 68 | + folder_name = clean(subject) |
| 69 | + if not os.path.isdir(folder_name): |
64 | 70 | # make a folder for this email (named after the subject) |
65 | | - os.mkdir(subject) |
66 | | - filepath = os.path.join(subject, filename) |
| 71 | + os.mkdir(folder_name) |
| 72 | + filepath = os.path.join(folder_name, filename) |
67 | 73 | # download attachment and save it |
68 | 74 | open(filepath, "wb").write(part.get_payload(decode=True)) |
69 | 75 | else: |
|
76 | 82 | print(body) |
77 | 83 | if content_type == "text/html": |
78 | 84 | # if it's HTML, create a new HTML file and open it in browser |
79 | | - if not os.path.isdir(subject): |
| 85 | + folder_name = clean(subject) |
| 86 | + if not os.path.isdir(folder_name): |
80 | 87 | # make a folder for this email (named after the subject) |
81 | | - os.mkdir(subject) |
82 | | - filename = f"{subject[:50]}.html" |
83 | | - filepath = os.path.join(subject, filename) |
| 88 | + os.mkdir(folder_name) |
| 89 | + filename = "index.html" |
| 90 | + filepath = os.path.join(folder_name, filename) |
84 | 91 | # write the file |
85 | 92 | open(filepath, "w").write(body) |
86 | 93 | # open in the default browser |
|
0 commit comments