How do I determine if an email is Base64 encoded?
-
11-07-2019 - |
Question
I am having difficulty determining if the body of a text email message is base64 encoded. if it is then use this line of code; making use of jython 2.2.1
dirty=base64.decodestring(dirty)
else continue as normal.
This is the code I have atm. What line of code will allow me to extract this from the email:
"Content-Transfer-Encoding: base64"
import email, email.Message
import base64
def _get_email_body(self):
try:
parts=self._email.get_payload()
check=parts[0].get_content_type()
if check=="text/plain":
part=parts[0].get_payload()
enc = part[0]['Content-Transfer-Encoding']
if enc == "base64":
dirty=base64.decodestring(dirty)
elif check=="multipart/alternative":
part=parts[0].get_payload()
enc = part[0]['Content-Transfer-Encoding']
if part[0].get_content_type()=="text/plain":
dirty=part[0].get_payload()
if enc == "base64":
dirty=base64.decodestring(dirty)
else:
return "cannot obtain the body of the email"
else:
return "cannot obtain the body of the email"
return dirty
except:
raise
OKAY this code works now! thanks all
Solution
Try:
enc = msg['Content-Transfer-Encoding']
It's a header so you won't be able to get it looking at the body. You should be able to get at the same place you find out the Subject.
OTHER TIPS
It is a header but you have to get the payload first from the message.
It'll be:
header = msg.get_payload()[0]
header['Content-Transfer-Encoding']
I'm using Python 3
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow