summi: Gute Möglichkeit den Email vom Rawheader zu befreien?

Moin Ihres.

Ich versuche gerade mittels einer Programmiersprache (im aktuellen Fall php) einen String der eine Komplette Email mit weiteren, angehängten Emails Darstellt, von seinem Header zu befreien und an die reinen Textnachrichten zu kommen. Hat da jemand eine Idee und kann mir helfen. Habe es mir regulären ausdrücken probiert doch die führen nicht zu einem guten Ergebnis.

Hier mal einen Beispiel:

Return-Path: xxx.xxxx@xxx.xxxx.de
X-Original-To: spam@xxx.xxx.de
Delivered-To: spam@xxx.xxx.de
Received: from cartman.xxx.xxxx.de (cartman.xxx.xxxx.de [193.189.247.191])
 by rhino.xxx.xxx.de (Postfix) with ESMTP id 47477141ED60
 for spam@xxx.xxx.de; Wed, 20 Jun 2007 11:18:38 +0200 (CEST)
Received: from localhost (localhost.localdomain [127.0.0.1])
 by cartman.xxx.xxxx.de (Postfix) with ESMTP id CF749964A9
 for spam@xxx.xxx.de; Wed, 20 Jun 2007 11:18:37 +0200 (CEST)
Received: from cartman.xxx.xxxx.de ([127.0.0.1])
 by localhost (cartman [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id 11896-06 for spam@xxx.xxx.de;
 Wed, 20 Jun 2007 11:18:36 +0200 (CEST)
Received: from chefkoch.xxx.xxxx.de (chefkoch.xxx.xxxx.de [87.188.167.245])
 by cartman.xxx.xxxx.de (Postfix) with ESMTP id 02A2C97CDF
 for spam@xxx.xxx.de; Wed, 20 Jun 2007 11:18:35 +0200 (CEST)
Subject:
Date: Wed, 20 Jun 2007 11:16:03 +0200
MIME-Version: 1.0
Content-Type: multipart/mixed;
 boundary="----_=_NextPart_001_01C7B31B.9EDF5840"
Message-ID: D8F9038B8188AB4686A5C04BFF163C1417C3C3@chefkoch.hq.xxx.xxxx.de
X-MS-Has-Attach:
Content-class: urn:content-classes:message
X-MS-TNEF-Correlator:
X-MimeOLE: Produced By Microsoft Exchange V6.5
Thread-Index: AcezG5/Plcqgw9x/RTCpSmVqK8vDow==
From: =?iso-8859-1?Q?xxx.yyy?= xxx.xxxx@xxx.xxxx.de
To: spam@xxx.xxx.de
X-ST-MF-Message-Resent: 20.06.2007 11:16
X-Scanned: by xxx.xxxx AMaViS at cartman.xxx.xxxx.de
X-Virus-Status: CLEAN
X-Virus-Scanner: ClamAV 0.90.3/3477/Wed Jun 20 08:47:18 2007 on xxx.xxx.DE
X-Spam-Status: SPAM (7.8/4.6)
X-Spam-Scanner: SpamAssassin on xxx.xxx.DE

This is a multi-part message in MIME format.

------_=_NextPart_001_01C7B31B.9EDF5840
Content-Type: text/plain;
 charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

[text text text text text text text text text text text text ]

------_=_NextPart_001_01C7B31B.9EDF5840
Content-Type: message/rfc822
Content-Transfer-Encoding: 7bit

Received:  from cartman.xxx.xxxx.de ([193.189.247.191]) by chefkoch.xxx.xxxx.de with Microsoft SMTPSVC(5.0.2195.6713); Wed, 20 Jun 2007 03:53:25 +0200
Received:  from localhost (localhost.localdomain [127.0.0.1]) by cartman.xxx.xxxx.de (Postfix) with ESMTP id C1A02964A2 for xxx.xxxx@xxx.xxxx.de; Wed, 20 Jun 2007 03:55:54 +0200 (CEST)
Received:  from cartman.xxx.xxxx.de ([127.0.0.1]) by localhost (cartman [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 24438-10 for xxx.xxxx@xxx.xxxx.de; Wed, 20 Jun 2007 03:55:54 +0200 (CEST)
Received:  from juno.com (unknown [218.16.123.185]) by xxx.xxxx.de (Postfix) with SMTP id 350BE97CDF for xxx.xxxx@xxx.xxxx.de; Wed, 20 Jun 2007 03:55:50 +0200 (CEST)
Content-class: urn:content-classes:message
MIME-Version: 1.0
Subject: [SPAM] Ihr Plasma an der Wand
Content-Type: multipart/related;
 boundary="----_=_NextPart_002_01C7B2DD.CBC9C260";
 type="multipart/alternative"
Date: Wed, 20 Jun 2007 04:33:46 +0200
Message-ID: 66EA2356.91AD982B@juno.com
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
X-MimeOLE: Produced By Microsoft Exchange V6.5
Thread-Topic: [SPAM] Ihr Plasma an der Wand
Thread-Index: Acey3cvJNRBLHA3jTG+YH9+3tNMTiA==
From: "Harrer" Sachso@juno.com

To: =?Windows-1252?Q?xxx.yyy?= xxx.xxxx@xxx.xxxx.de
Reply-To: "Harrer" Sachso@juno.com

This is a multi-part message in MIME format.

------_=_NextPart_002_01C7B2DD.CBC9C260
Content-Type: multipart/alternative;
 boundary="----_=_NextPart_003_01C7B2DD.CBC9C260"

------_=_NextPart_003_01C7B2DD.CBC9C260
Content-Type: text/plain;
 charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable

[viiiiiiiiiiiiiiiiiiiel zu viiiiiiiiiiiiiiiiiel text um ihn hier auszugeben]

------_=_NextPart_003_01C7B2DD.CBC9C260
Content-Type: text/html;
 charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable

[gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz viel text bzw. hier sogar html]

------_=_NextPart_003_01C7B2DD.CBC9C260--

------_=_NextPart_001_01C7B31B.9EDF5840--

--
  1. Hi!

    Habe es mir regulären ausdrücken probiert doch die führen nicht zu einem guten Ergebnis.

    Wie sehen denn deine Versuche aus?
    Was heißt "führt zu keinen guten Ergebnis"?

    Schöner Gruß,
    rob

    1. Wie sehen denn deine Versuche aus?

      hier ist der Reguläre Ausdruck:
      /[-]{6}_=_NextPart_[\d]{0,3}[_]{0,1}[\d]{0,4}_[0-9ABCDEFabcdef]{8}.[0-9ABCDEFabcdef]{8}/

      Den habe ich mit einem preg_split() angewendet. Damit bekomme ich aber weder den eigentlichen Header noch die Mails im Anhang sauber raus. Und ich bezweifel, dass es mit einem RegEx überhaupt funktioniert.

      Was heißt "führt zu keinen guten Ergebnis"?

      Ich benötige die reinen Texte aus der Email, keine Headerinfos. Das bekomme ich so im Moment nicht hin. Deswegen "kein gutes Ergebnis".

      --
  2. Hallo summi.

    Ich versuche gerade mittels einer Programmiersprache (im aktuellen Fall php) einen String der eine Komplette Email mit weiteren, angehängten Emails Darstellt, von seinem Header zu befreien und an die reinen Textnachrichten zu kommen. Hat da jemand eine Idee und kann mir helfen. Habe es mir regulären ausdrücken probiert doch die führen nicht zu einem guten Ergebnis.

    Ein erster Ansatz wäre, einfach alles bis zum ersten Auftreten von „\r\n\r\n“ zu verwerfen. Diese Zeichenkette kennzeichnet eindeutig das Ende jeglicher E-Mail-Header. Alles was danach kommt ist ausnahmslos E-Mail-Body.

    Einen schönen Dienstag noch.

    Gruß, Mathias

    --
    ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
    debian/rules
    1. Hallo Mathias,

      Ein erster Ansatz wäre, einfach alles bis zum ersten Auftreten von „\r\n\r\n“ zu verwerfen. Diese Zeichenkette kennzeichnet eindeutig das Ende jeglicher E-Mail-Header. Alles was danach kommt ist ausnahmslos E-Mail-Body.

      Noch schneller ginge es mit der Funktion explode:

      $maildata = explode("\r\n\r\n", $mail, 2);  
      // $maildata[0] enthält Header, $maildata[1] den Inhalt der Mail
      

      Grüße

      Marc Reichelt || http://www.marcreichelt.de/

      --
      Linux is like a wigwam - no windows, no gates and an Apache inside!
      Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
    2. Hi!

      Ein erster Ansatz wäre, einfach alles bis zum ersten Auftreten von „\r\n\r\n“ zu verwerfen. Diese Zeichenkette kennzeichnet eindeutig das Ende jeglicher E-Mail-Header.

      Nein, leider nicht. So sollte und müßte es eigentlich sein.

      Aber leider ist es so, daß es auch Mails mit eigentlich falschen Umbrüchen gibt. Einige MTAs nehmen die Mails auch mit \n\n an und senden die so weiter.

      Schöner Gruß,
      rob

      1. Nein, leider nicht. So sollte und müßte es eigentlich sein.

        Das war auch ein Ansatz von mir. Um den Main-Header vom Body zu trennen wäre das vielleicht sogar ein ansatz für eine lösung. nur wie bekomme ich (wenn ich mails weiterleite und ins attactchment packet) die dort sauber als einzelne mails erkannt. diverse clients schaffen es ja, dort wieder eine saubere nachricht draus zu erkennen.

        --
  3. Ich versuche gerade mittels einer Programmiersprache (im aktuellen Fall php) einen String der eine Komplette Email mit weiteren, angehängten Emails Darstellt, von seinem Header zu befreien und an die reinen Textnachrichten zu kommen. Hat da jemand eine Idee und kann mir helfen.

    Ich würde auf fertige Bibliotheken zurückgreifen, z.B. das Mailparse-Package.

    Siechfred

    --
    Ein Selbständiger ist jemand, der bereit ist, 16 Stunden am Tag zu arbeiten, nur um nicht 8 Stunden für einen Anderen arbeiten zu müssen.
    1. moin siechfred,

      Ich würde auf fertige Bibliotheken zurückgreifen, z.B. das

      Mailparse-Package.
      würde ich auch gern tun. muss ich wohl mal mit meinem provider meiens vertrauens sprechen :)

      gruß, summi

      Siechfred

      --