6 Stimmen

Wie kann ich feststellen, ob eine E-Mail Base64-kodiert ist?

Ich habe Schwierigkeiten festzustellen, ob der Text einer E-Mail-Nachricht base64-kodiert ist. Wenn ja, dann verwenden Sie diese Codezeile; Verwendung von jython 2.2.1

dirty=base64.decodebytes(dirty)

sonst wie gewohnt fortfahren.

Dies ist der Code, den ich im Moment habe. Welche Zeile des Codes wird mir erlauben, dies aus der E-Mail zu extrahieren:

"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.decodebytes(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.decodebytes(dirty)
            else:
                return "cannot obtain the body of the email"
        else:
            return "cannot obtain the body of the email"
        return dirty
    except:
        raise

OKAY dieser Code funktioniert jetzt! danke an alle

6voto

Harley Holcombe Punkte 165146

Versuchen Sie es:

enc = msg['Content-Transfer-Encoding']

Da es sich um eine Kopfzeile handelt, können Sie sie nicht aus dem Textkörper herauslesen. Sie sollten in der Lage sein, an der gleichen Stelle, die Sie herausfinden, das Thema zu bekommen.

1voto

Ricardo De Leon Punkte 11

Es handelt sich um einen Header, aber Sie müssen zuerst die Nutzlast aus der Nachricht erhalten.

Das wird es sein:

header = msg.get_payload()[0]
header['Content-Transfer-Encoding']

Ich verwende Python 3

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X