Imap und HTML e-Mails

kevkev

Erfahrenes Mitglied
Hi,

Wenn ich eine e-mail mit imap abhole, mache Ich das so:
---
$nachricht = imap_fetchbody($mbox, $msgo, 2);
---

Dann habe Ich bei einer Plain-Text e-Mail einen base64 encodierten String, den ich dann einfach nur noch decodieren muss.

Doch bei einer HTML-Mail bekomme Ich das ganze nur gescheit dargestellt, wenn ich imap_qprint() anwende.

Meine Frage:
Wie läßt sich _sicher_ rausfinden, ob die e-Mail nun Plain Text oder HTML ist?

Gruß Kevin
 
Normalerweise deuten die Angaben im Kopf der Nachricht darauf hin, ob der Inhalt kodiert ist oder nicht und als was er klassifiziert ist.
 
Hi,

Ja, ich hätte auch bei 2 unterschiedlichen Mails, einmal Plain/Text und einmal HTML, für Plain/Text: us-ascii und HTML nochmal was anderes.

Jetzt weiß Ich nicht, was für andere Arten es noch gibt, weil wenn Ich alle Mails die nur als us-ascii gekennzeichnet sind, als Plain/Text erkenne, und es gibt eventuell noch andere "Typen", dann werden diese falsch decodiert.

Gruß Kevin
 
Bei MIME-E-Mails gibt es zwei Header-Feld, die in diesem Fall interessant sind: das „Content-Type“- und das „Content-Transfer-Encoding“-Feld. Welche Werte haben denn diese Felder bei deinen E-Mails?
 
Hi,

Ich hole mir Infos zu der Mail mit imap_fetchstructure().

Wo genau erkenne Ich das?

gruß Kevin
 
Hi,

Jaja, Ich weiß schon, nur finde Ich dort keinen "Contenttyp" oder ähnliches.
Ist mir ziemlich komisch aufgeteilt:

Plain-Text e-Mail:
Code:
stdClass Object
(
    [type] => 0
    [encoding] => 0
    [ifsubtype] => 1
    [subtype] => PLAIN
    [ifdescription] => 0
    [ifid] => 0
    [lines] => 2
    [bytes] => 10
    [ifdisposition] => 0
    [ifdparameters] => 0
    [ifparameters] => 1
    [parameters] => Array
        (
            [0] => stdClass Object
                (
                    [attribute] => charset
                    [value] => us-ascii
                )

        )

)

HTML E-Mail:
Code:
stdClass Object
(
    [type] => 1
    [encoding] => 0
    [ifsubtype] => 1
    [subtype] => ALTERNATIVE
    [ifdescription] => 0
    [ifid] => 0
    [ifdisposition] => 0
    [ifdparameters] => 0
    [ifparameters] => 1
    [parameters] => Array
        (
            [0] => stdClass Object
                (
                    [attribute] => boundary
                    [value] => ----=_NextPart_000_000A_01C628F0.0EA8BF80
                )

        )

    [parts] => Array
        (
            [0] => stdClass Object
                (
                    [type] => 0
                    [encoding] => 4
                    [ifsubtype] => 1
                    [subtype] => PLAIN
                    [ifdescription] => 0
                    [ifid] => 0
                    [lines] => 233
                    [bytes] => 6236
                    [ifdisposition] => 0
                    [ifdparameters] => 0
                    [ifparameters] => 1
                    [parameters] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [attribute] => charset
                                    [value] => iso-8859-1
                                )

                        )

                )

            [1] => stdClass Object
                (
                    [type] => 0
                    [encoding] => 4
                    [ifsubtype] => 1
                    [subtype] => HTML
                    [ifdescription] => 0
                    [ifid] => 0
                    [lines] => 887
                    [bytes] => 32918
                    [ifdisposition] => 0
                    [ifdparameters] => 0
                    [ifparameters] => 1
                    [parameters] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [attribute] => charset
                                    [value] => iso-8859-1
                                )

                        )

                )

        )

)

Plain Text e-Mail mit Anhang:
Code:
stdClass Object
(
    [type] => 1
    [encoding] => 0
    [ifsubtype] => 1
    [subtype] => MIXED
    [ifdescription] => 0
    [ifid] => 0
    [ifdisposition] => 0
    [ifdparameters] => 0
    [ifparameters] => 1
    [parameters] => Array
        (
            [0] => stdClass Object
                (
                    [attribute] => boundary
                    [value] => ----=_NextPart_000_0011_01C628F1.CED235B0
                )

        )

    [parts] => Array
        (
            [0] => stdClass Object
                (
                    [type] => 0
                    [encoding] => 0
                    [ifsubtype] => 1
                    [subtype] => PLAIN
                    [ifdescription] => 0
                    [ifid] => 0
                    [lines] => 1
                    [bytes] => 19
                    [ifdisposition] => 0
                    [ifdparameters] => 0
                    [ifparameters] => 1
                    [parameters] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [attribute] => charset
                                    [value] => us-ascii
                                )

                        )

                )

            [1] => stdClass Object
                (
                    [type] => 0
                    [encoding] => 4
                    [ifsubtype] => 1
                    [subtype] => PLAIN
                    [ifdescription] => 0
                    [ifid] => 0
                    [lines] => 1016
                    [bytes] => 65931
                    [ifdisposition] => 1
                    [disposition] => attachment
                    [ifdparameters] => 1
                    [dparameters] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [attribute] => filename
                                    [value] => data.txt
                                )

                        )

                    [ifparameters] => 1
                    [parameters] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [attribute] => name
                                    [value] => data.txt
                                )

                            [1] => stdClass Object
                                (
                                    [attribute] => charset
                                    [value] => us-ascii
                                )

                        )

                )

        )

)

:confused:

Edit:
Würde Ich ja, aber wo gibt es eine?

Gruß Kevin
 
Zuletzt bearbeitet:
Das „type“- zusammen mit dem „subtype“-Objekt beschreibt den Media-Typ. Bei der ersten E-Mail ist es der Media-Typ „text/plain“, bei der zweiten „multipart/alternative“, bei der letzten „multipart/mixed“.

Wie bereits erwähnt, solltest du vielleicht eine fertige Klassen benutzen, falls das Ganze „zu hoch“ für dich ist.
 
Zurück