@@ -41,7 +41,7 @@ def get_text(email_body):
41
41
return soup .get_text (separator = "\n " , strip = True )
42
42
43
43
44
- def write_to_csv (mail , writer ):
44
+ def write_to_csv (mail , writer , N , total_no_of_mails ):
45
45
46
46
for i in range (total_no_of_mails , total_no_of_mails - N , - 1 ):
47
47
res , data = mail .fetch (str (i ), "(RFC822)" )
@@ -65,10 +65,9 @@ def write_to_csv(mail, writer):
65
65
content_disposition = str (part .get ("Content-Disposition" ))
66
66
try :
67
67
# get the email email_body
68
- email_body = part .get_payload (decode = True ).decode (
69
- "utf-8"
70
- )
71
- email_text = get_text (email_body )
68
+ email_body = part .get_payload (decode = True )
69
+ if email_body :
70
+ email_text = get_text (email_body .decode ('utf-8' ))
72
71
except Exception as exc :
73
72
logger .warning ('Caught exception: %r' , exc )
74
73
if (
@@ -85,13 +84,16 @@ def write_to_csv(mail, writer):
85
84
# extract content type of email
86
85
content_type = msg .get_content_type ()
87
86
# get the email email_body
88
- email_body = msg .get_payload (decode = True ).decode ("utf-8" )
89
- email_text = get_text (email_body )
90
-
91
- # Write data in the csv file
92
- row = [email_date , email_from , email_subject , email_text ]
93
- writer .writerow (row )
94
-
87
+ email_body = msg .get_payload (decode = True )
88
+ if email_body :
89
+ email_text = get_text (email_body .decode ('utf-8' ))
90
+
91
+ if email_text is not None :
92
+ # Write data in the csv file
93
+ row = [email_date , email_from , email_subject , email_text ]
94
+ writer .writerow (row )
95
+ else :
96
+ logger .warning ('%s:%i: No message extracted' , "INBOX" , i )
95
97
96
98
def main ():
97
99
mail , messages = connect_to_mailbox ()
@@ -107,7 +109,7 @@ def main():
107
109
writer = csv .writer (fw )
108
110
writer .writerow (["Date" , "From" , "Subject" , "Text mail" ])
109
111
try :
110
- write_to_csv (mail , writer )
112
+ write_to_csv (mail , writer , N , total_no_of_mails )
111
113
except Exception as exc :
112
114
logger .warning ('Caught exception: %r' , exc )
113
115
0 commit comments