T-Rex: Content-Transfer-Encoding - Mail

Moin,

bin gerade über den Mailheader "Content-Transfer-Encoding" in meinem eigenen Script gestolpert :D. Erstmal wußte ich nicht was das soll, hab dann aber Hilfe in einem Forum gefunden:
http://www.mailhilfe.de/frage_Content%252BTransfer%252BEncoding%252B-%253Fbit_6149.html

Zitat:

Na jetzt wirds etwas komplizierter im Grunde genommen gibt dieser Wert an WAS überhaupt ein "Zeichen" ist,wenn man mit einer "LUPE" auf die Telefonleitung sehen würde,würde da ja kein lesbarer Text übertragen,sondern 1000100001100011111110000111110000111110 so,irgendwie muss der Browser jetzt wissen wie "Groß" ein Zeichen ist.

Soweit alles verstanden. Meine Frage ist ob ich das immer angeben muss? Meine Mails werden als UTF8 verschickt. Wenn ja welchen Wert hat "Content-Transfer-Encoding"?
Bei mir hat er aktuell "quoted-printable" und das führt dazu dass Zeichen wie "=" nicht dargestellt werden. Lasse ich den Header weg passt alles. zumindest bei meinem Mailprogramm.

Gruß
Mailender
T-Rex

  1. Hallo,

    bin gerade über den Mailheader "Content-Transfer-Encoding" in meinem eigenen Script gestolpert :D.

    faszinierend, was man selbst schon so alles verwendet hat, stimmt's? ;-)

    Zitat:

    Na jetzt wirds etwas komplizierter im Grunde genommen gibt dieser Wert an WAS überhaupt ein "Zeichen" ist,wenn man mit einer "LUPE" auf die Telefonleitung sehen würde,würde da ja kein lesbarer Text übertragen,sondern 1000100001100011111110000111110000111110 so,irgendwie muss der Browser jetzt wissen wie "Groß" ein Zeichen ist.

    Das ist kompletter Quatsch.
    Prinzipiell ist die Übermittlung von e-Mails textbasiert. Historisch bedingt muss man aber immer noch einkalkulieren, dass es alte Systeme auf dem Übertragungsweg gibt, die nur mit 7bit-Daten umgehen können. Deswegen kann es problematisch sein, die Daten in "Rohform", also mit "Content-Transfer-Encoding: 8bit" zu senden.
    Um dieses potentielle Problem zu umgehen, codiert man den Nachrichteninhalt gern so um, dass nur noch ASCII-Zeichen vorkommen. Dazu gibt es die beiden Varianten Quoted-Printable und base64.

    Quoted-Printable legt fest, dass
     a) alle Bytewerte >0x7F als '='-Zeichen gefolgt vom hexadezimalen Wert des Bytes notiert werden
     b) ein im Text vorkommendes '='-Zeichen ebenfalls nach Regel a) notiert wird, also als =3D
     c) ein '=' am Zeilenende bedeutet, dass der Zeilenumbruch selbst nicht Teil der Message ist.
    Dagegen ist base64 ein unspezifischer Rundumschlag; hier werden *alle* Bytes umcodiert.

    Soweit alles verstanden. Meine Frage ist ob ich das immer angeben muss?

    Nein. AFAIK gilt der Defaultwert "8bit", wenn die Angabe fehlt.

    Meine Mails werden als UTF8 verschickt. Wenn ja welchen Wert hat "Content-Transfer-Encoding"?

    Whatever you say. Ich würde "Quoted-Printable" empfehlen, meist geht aber "8bit" auch gut.

    Bei mir hat er aktuell "quoted-printable" und das führt dazu dass Zeichen wie "=" nicht dargestellt werden.

    Dieses Zeichen ist das Escape-Zeichen in "Quoted-Printable" und muss daher selbst escapet werden. Siehe oben.

    Jetzt alle larheiten beseitigt? :-)

    Ciao,
     Martin

    --
    Treffen sich zwei Holzwürmer im Käse: "Na, auch Probleme mit den Zähnen?"
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Kann man die "alten Systeme" in die gleiche Schublade stecken wie den IE5 - gibts noch auf dem Papier und ein paar Nerds benutzten das noch?

      Dieses Zeichen ist das Escape-Zeichen in "Quoted-Printable" und muss daher selbst escapet werden. Siehe oben.

      Gibt's da eine Wunderfunktion von PHP so wie urlencode()?
      Wenn nein, welche Zeichen müssen noch maskiert werden?

      Welche Einstellung würdest du mir empfehlen bei UTF8 Mails?

      Gruß
      \T-\R\e\x

      1. Hallo,

        Kann man die "alten Systeme" in die gleiche Schublade stecken wie den IE5 - gibts noch auf dem Papier und ein paar Nerds benutzten das noch?

        ich weiß es nicht. Vermutlich sind die eher akademisch, aber wozu das Risiko eingehen, wenn man mit Quoted-Printable eine so einfache Transfercodierung zur Hand hat?

        Gibt's da eine Wunderfunktion von PHP so wie urlencode()?

        Ich würde mal das Pärchen imap_8bit() und imap_qprint() empfehlen (hin und zurück). Zugegeben, die findet man vielleicht nicht auf Anhieb; wenn man aber weiß, dass PHP fast alles, das mit e-Mail zu tun hat, ins IMAP-Modul packt ...

        Wenn nein, welche Zeichen müssen noch maskiert werden?

        Keine außer denen, die ich bereits erwähnt habe.

        Welche Einstellung würdest du mir empfehlen bei UTF8 Mails?

        Wie gesagt: Quoted-Printable.

        Ciao,
         Martin

        --
        Liebet eure Feinde - vielleicht schadet das ihrem Ruf.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      2. Hi,

        Dieses Zeichen ist das Escape-Zeichen in "Quoted-Printable" und muss daher selbst escapet werden. Siehe oben.

        Gibt's da eine Wunderfunktion von PHP so wie urlencode()?

        Das Wunderding Google kannst du doch wohl selbst bedienen, oder?

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. Hi,

    Wenn ja welchen Wert hat "Content-Transfer-Encoding"?
    Bei mir hat er aktuell "quoted-printable" und das führt dazu dass Zeichen wie "=" nicht dargestellt werden.

    Natürlich nicht, wenn du die Daten nicht auch tatsächlich in der angegebenen Kodierung kodiert hast …

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?