2016-06-13 9 views
0

Ich weiß, dass alle Nachrichtentexte zu bekommen, dann ist dies der Befehl:Fetch imap Körper Nachricht per Telnet

[imap_code] UID FETCH [uid] BODY.PEEK[TEXT] 

So bekomme ich den gesamten Nachrichtentext. Aber ich muss den Teil der Anhänge ausschließen. Ich möchte nur Nachricht vom Absender, Text und/oder HTML geschrieben.

Gibt es einen Weg?

Dies ist eine vollständige raw HTML Mail mit Anhang

http://pastebin.com/FMEQdLM3

würde Ich mag nur

<div dir="ltr">This is the message body<div><ul><li>one</li><li>two</li></ul></div></div> 

oder Klartext erhalten, wenn es nicht HTML-Version

+0

Bitte aktualisieren Sie die Frage mit einem Beispieleintrag aus dem tatsächlichen Protokoll und die tatsächliche Ausgabe erwarten Sie – Inian

+0

Ok, ich habe ein Beispiel zur Verfügung gestellt – matiux

+0

Sehen alle Ihre Nachrichten wie dieses Beispiel? – Max

Antwort

3

Nachrichten ist sind in einem beliebigen Baum von Teilen angeordnet, wobei die übergeordneten Elemente vom Typ multipart/* oder message/rfc822 sind und Kinder andere Typen haben. Die FETCH BODY[...] können beliebige dieser Teile beliebig extrahieren.

Leider gibt es kein Standardlayout für Nachrichten. Sie können den BODYSTRUCTURE-Eintrag abrufen, um das MIME-Layout einer Nachricht abzurufen, aber es ist sehr schwierig, mit dem Auge zu analysieren.

Das gesagt, es gibt ein paar allgemeine Nachrichten-Layouts, die Sie den größten Teil des Weges bekommen.

Am einfachsten ist eine Nachricht mit nur einem Text, entweder text/html oder text/plain. Einfach holen BODY[TEXT].

Die nächste ist Multi-Format, mit Text/HTML und Text/Plain. Seine MIME Struktur sieht im Allgemeinen wie folgt aus:

+ multipart/alternative [TEXT] 
|- text/plain    [1] 
\- text/html    [2] 

In diesem Fall Sie BODY[2] holen wollen.

Wenn die Nachricht Single-Körper, mit Anhängen, wird es wie folgt aussehen:

+ multipart/mixed or multipart/related [TEXT] 
|- text/html or text/plain    [1] 
|- image/jpg       [2] 
| ... 
\- image/gif 

In diesem Fall Sie BODY[1] wollen.

Zuletzt ist beides: Multi-Format-Körper mit Anhängen. Es wird dazu neigen, etwas zu aussehen:

+ multipart/mixed or multipart/related [TEXT] 
|-+ multipart/alternative    [1] 
| |- text/plain       [1.1] 
| \- text/html       [1.2] 
|- image/jpeg       [2] 
|- image/gif       [3] 
|... 
\- image/png 

In diesem Fall werden Sie wahrscheinlich BODY[1.2] wollen. Ihre Beispielnachricht ist von diesem Typ.


Darüber hinaus können die Körper in Quoted-Printable oder Base64-Codierung codiert werden. Leider bietet Baseline IMAP keine Möglichkeit für den Server, dies für Sie zu dekodieren. Quoted-Printable kann meistens gelesen werden, wenn die Nachricht ascii ist, aber viele = Escapes im ganzen Körper haben. Wenn es base64 ist, werden Sie nicht in der Lage sein, es mit dem Auge zu entziffern. Die BINARY IMAP extension kann dabei helfen, aber das ist nicht weit verbreitet.

+0

[Entschuldigen Sie meine Ascii Kunstbäume] – Max