55from email .mime .text import MIMEText
66from email .mime .image import MIMEImage
77from pyfunc2 .file .check_and_create_path import check_and_create_path
8+ import logging
89
910from types import NoneType
1011
1314
1415def download_attachments_in_email (resp , data , emailid = "" , outputdir = "" , xx = 0 ,
1516 attachements = ["pdf" , "jpg" , "gif" , "png" ]):
17+ logging .basicConfig (level = logging .DEBUG )
1618 # m.store(emailid, '+FLAGS', '\Seen')
1719 # print("download_attachments_in_email emailid:", emailid)
1820 # print("download_attachments_in_email outputdir:", outputdir)
@@ -67,8 +69,9 @@ def download_attachments_in_email(resp, data, emailid="", outputdir="", xx=0,
6769 names = str (int (emailid ))
6870
6971 filename = names + "_" + str (xx )
70- print ("download_attachments_in_email filename:" , filename )
71-
72+ logging .debug (f"Processing part: filename={ filename } " )
73+ logging .debug (f"part.get_content_maintype()={ part .get_content_maintype ()} " )
74+ logging .debug (f"part.get('Content-Disposition')={ part .get ('Content-Disposition' )} " )
7275 if part .get_content_maintype () != 'multipart' and part .get ('Content-Disposition' ) is not None :
7376 try :
7477 if not isinstance (part .get_filename (), NoneType ):
@@ -81,16 +84,20 @@ def download_attachments_in_email(resp, data, emailid="", outputdir="", xx=0,
8184 subfolder = ""
8285 if extension != attachements [0 ]:
8386 subfolder = f'/{ extension } /'
87+ logging .debug (f"Creating/checking path: { outputdir + subfolder } " )
8488 check_and_create_path (outputdir + subfolder )
8589
86- open (outputdir + subfolder + part .get_filename (), 'wb' ).write (part .get_payload (decode = True ))
90+ file_path = outputdir + subfolder + part .get_filename ()
91+ logging .debug (f"Saving attachment to: { file_path } " )
92+ open (file_path , 'wb' ).write (part .get_payload (decode = True ))
8793 # print(part.get_filename())
8894 else :
95+ print (f"DEBUG: part.get_content_maintype()={ part .get_content_maintype ()} , part.get('Content-Disposition')={ part .get ('Content-Disposition' )} " )
8996 try :
9097 #content = part.get_payload(decode=True)
9198 # get mime type from content
9299 type = part .get_content_type ()
93- extension = type .split ("/" )[1 ]
100+ extension = type .split ("/" )[1 ] if "/" in type else ""
94101 except :
95102 extension = ""
96103
@@ -105,10 +112,12 @@ def download_attachments_in_email(resp, data, emailid="", outputdir="", xx=0,
105112 subfolder = ""
106113 if extension != attachements [0 ]:
107114 subfolder = f'/{ extension } /'
115+ logging .debug (f"Creating/checking path: { outputdir + subfolder } " )
108116 check_and_create_path (outputdir + subfolder )
109117
110- open (outputdir + subfolder + filename + "." + extension , 'wb' ).write (
111- part .get_payload (decode = True ))
118+ file_path = outputdir + subfolder + filename + "." + extension
119+ logging .debug (f"Saving attachment to: { file_path } " )
120+ open (file_path , 'wb' ).write (part .get_payload (decode = True ))
112121 # open(outputdir + filename + ".html", 'wb').write()
113122
114123 except FileNotFoundError as ex :
@@ -120,13 +129,19 @@ def download_attachments_in_email(resp, data, emailid="", outputdir="", xx=0,
120129 #mime = magic.Magic(mime=True)
121130 #type = mime.from_file(content)
122131 type = part .get_content_type ()
123- extension = type .split ("/" )[1 ]
132+ extension = type .split ("/" )[1 ] if "/" in type else ""
124133 print (f"DEBUG: type={ type } , extension={ extension } , attachements={ attachements } " )
125134
126135 subfolder = ""
127136 if extension != attachements [0 ]:
128137 subfolder = f'/{ extension } /'
138+ logging .debug (f"Creating/checking path: { outputdir + subfolder } " )
129139 check_and_create_path (outputdir + subfolder )
130140
131- open (outputdir + subfolder + filename + "." + extension , 'wb' ).write (part .get_payload (decode = True ))
132- # toLowerCase(string):
141+ file_path = outputdir + subfolder + filename + "." + extension
142+ logging .debug (f"Saving attachment to: { file_path } " )
143+ open (file_path , 'wb' ).write (part .get_payload (decode = True ))
144+ except Exception as e :
145+ logging .error (f"Error saving attachment: { e } " )
146+ else :
147+ logging .debug ("Skipping part: not an attachment or multipart." )
0 commit comments