Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   EML Indy Body enthält Header (https://www.delphipraxis.net/195419-eml-indy-body-enthaelt-header.html)

dataspider 27. Feb 2018 08:51

EML Indy Body enthält Header
 
Hi

Ich lese mit Indy EML - Dateien aus.
Das funktionierte bis jetzt. Ich habe nun eine Mail, welche keine MessageParts hat.
ContentType von TIdMessage is 'Plain/Text'

Also hole ich den Text der Mail aus IdMessage.Body anstatt IdText.Body.

Und nur bei dieser Konstellation geht der BodyText nach den eigentlichen Text weiter mit:
Received From: ...
Received From: ...
Subject: ...
und alle möglichen weiteren Headerinformationen.

Wenn ich die EML mit dem Hex - Editor anschaue, ist nach dem Body nur noch 2 X 0D0A, dann kommt das Received From...

Ist jetzt die EML fehlerhaft (kommt von Lotus Notes)?
Irgendwie muss ja z.B. Indy erkennen, wann der Body beendet ist.
Oder gibt es noch irgendwo Längenangaben?

Frank

Delphi.Narium 27. Feb 2018 13:05

AW: EML Indy Body enthält Header
 
Bitte mal 'ne entsprechende EML hier anhängen.

Da scheint irgendwas nicht mit zu stimmen, aber ohne so ein Exemplar mal anzuschauen, scheint mir ein zielführender Lösungsvorschlag eher schwierig.

Mögliche Ausgangspunkte für die "Forschung":

https://stackoverflow.com/questions/...l-file-formats
https://www.ietf.org/rfc/rfc1521.txt

himitsu 27. Feb 2018 13:20

AW: EML Indy Body enthält Header
 
Zitat:

Irgendwie muss ja z.B. Indy erkennen, wann der Body beendet ist.
Das ist bei HTTP und Verwandten ganz einfach so definiert.

Der Header ist alles, bis zur ersten Leerzeile und danach kommt der Body (Text, Binär oder sonstwie).

dataspider 27. Feb 2018 15:54

AW: EML Indy Body enthält Header
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1394745)
Bitte mal 'ne entsprechende EML hier anhängen.

Ich wollte die EML per PN schicken, aber das ist wohl in deinem Profil gesperrt?
Da es sich um echte Daten handelt, möchte ich das nicht öffentlich hier anhängen.

Danke

Frank

dataspider 27. Feb 2018 16:08

AW: EML Indy Body enthält Header
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von himitsu (Beitrag 1394746)
Zitat:

Irgendwie muss ja z.B. Indy erkennen, wann der Body beendet ist.
Das ist bei HTTP und Verwandten ganz einfach so definiert.

Der Header ist alles, bis zur ersten Leerzeile und danach kommt der Body (Text, Binär oder sonstwie).

Aber wie erkennt man, wann der Body zu Ende ist.
Wie gesagt, wenn ich mir das im Hex Editor ansehe habe ich auch keine Idee, wie man den Body allein extrahiert.

Im Scrennshot mal in HEX der Übergang Body zu Rest
Wirklich nur 2 x CRLF. 2 x CRLF ist aber auch im Text enthalten und wäre als Trenner auch unsinnig.

Frank

himitsu 27. Feb 2018 16:36

AW: EML Indy Body enthält Header
 
Zitat:

Zitat von dataspider (Beitrag 1394759)
Aber wie erkennt man, wann der Body zu Ende ist.

Entweder die Größe steht im Header oder es geht einfach bis zum Ende des Streams / der Datei.

Darum gibt es z.B. beim Download von Dateien, ohne Größe im Header, auch keine Fortschrittsanzeige
und am Ende natürlich auch keine Prüfung ob alles da ist, falls die Verbingung abkratzte. (weiß ja der Client nicht ob Abbruch oder Ende war)



Bei den MultiMessage-Mails, gibt es einmal den Header+Body über alles (Größe im Header oder bis Dateiende)

und dann im Body nochmal die Parts.
Da dann jeweils wieder Größe im Part-Header oder es gibt eine START/STOP-Signatur, welche im Header genannt wurde,
und dann anschließend der nächste Part-Header mit seinem Body usw. (eventuell sogar nochmal weiter verschachtelt)

Delphi.Narium 27. Feb 2018 16:44

AW: EML Indy Body enthält Header
 
Zitat:

Zitat von dataspider (Beitrag 1394759)
Zitat:

Zitat von himitsu (Beitrag 1394746)
Zitat:

Irgendwie muss ja z.B. Indy erkennen, wann der Body beendet ist.
Das ist bei HTTP und Verwandten ganz einfach so definiert.

Der Header ist alles, bis zur ersten Leerzeile und danach kommt der Body (Text, Binär oder sonstwie).

Aber wie erkennt man, wann der Body zu Ende ist.
Wie gesagt, wenn ich mir das im Hex Editor ansehe habe ich auch keine Idee, wie man den Body allein extrahiert.

Im Scrennshot mal in HEX der Übergang Body zu Rest
Wirklich nur 2 x CRLF. 2 x CRLF ist aber auch im Text enthalten und wäre als Trenner auch unsinnig.

Frank

Bei reiner Textmail:
Header ist alles vor der ersten Leerzeile.

Alles hinter der ersten Leerzeile ist Body.

Am Ende sollte es noch eine Leerzeile, eine Zeile mit einem . und ein (oder zwei) Leerzeile(n) geben.

Frühere Indyversionen hatten Probleme, wenn das "Ende" nicht passte.
Deshalb versuch bitte mal, ob durch das Anfügen einer Leerzeile, einer Zeile mit einem Punkt und weiteren zwei Leerzeilen vor der Verarbeitung mit Indy, das Problem zu beheben ist.

Eventuell mal da stöbern gehen: http://www.delphipraxis.net/128350-i...-auslesen.html

Schau bitte mal, ob Du mir jetzt 'ne PN schicken kannst.

dataspider 28. Feb 2018 11:02

AW: EML Indy Body enthält Header
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1394765)
Schau bitte mal, ob Du mir jetzt 'ne PN schicken kannst.

Geht noch nicht...

Frank

Delphi.Narium 28. Feb 2018 11:07

AW: EML Indy Body enthält Header
 
und jetzt?

Delphi.Narium 28. Feb 2018 11:29

AW: EML Indy Body enthält Header
 
'ne reine Textmail sollte vom Prinzip so aussehen:
Code:
x-sender: Absender@irgendwo.com
x-receiver: empfaenger@anderswo.com
X-SCL: 7 93.11%
Received: from 127.0.0.1 ([127.0.0.1]) by mailserver.empfaenger.com with Microsoft SMTPSVC(6.0.3790.3959);
    Fri, 29 Feb 2018 11:11:11 +0100
Message-ID: <000801c87ac0$0608774a$7a29978a@cfghapi>
From: "Absendername" <Absender@irgendwo.com>
To: <empfaenger@anderswo.com>
Subject: Betreff
Date: Fri, 29 Feb 2018 11:11:11 +0000
MIME-Version: 1.0
Content-Type: text/plain;
   charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2900.3138
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3198
Return-Path: Absender@irgendwo.com
X-OriginalArrivalTime: 29 Feb 2018 11:11:11.0390 (UTC) FILETIME=[9EA3BEE0:01C87AC0]

Hier sollte nun der Mailtext stehen.

Und noch mehr Text.

Und noch mehr Text.
(Und am Ende zwei Leerzeilen.)

Passt dieser Aufbau bei Deinen Problemmails?


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:00 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz