Schnaps: Problem mit Regulärem Ausdruck!

Servus

Ich rufe über ein Script E-Mails von meinem Pop3 Server ab, diese kommen dann aber mit allen Header Infos und was so alles dazu gehört.

Nun will ich mir aus diesen Mails bestimmte Infos per Regexp rausfiltern.

Hier mal eine Mail das ihr sehen könnt worauf ich den filter anwende.

'1756',,'Return-Path: Delivered-To: web111p1@s14.pixelx.de Received: from sv10.pixelx.de (s10.pixelx.de [62.146.30.200]) by s14.pixelx.de (s14.pixelx.de) with ESMTP id 80C3944085 for ; Mon, 22 Mar 2004 10:33:30 +0100 (CET) Received: from privat (p5087BB4D.dip.t-dialin.net [80.135.187.77]) (authenticated (0 bits)) by sv10.pixelx.de (8.11.6/8.11.6/SuSE Linux 0.5) with ESMTP id i2M9adE16662 for ; Mon, 22 Mar 2004 10:36:39 +0100 Message-ID: 002001c40ff0$bda855b0$8aa7fea9@privat From: "BBWEB" To: Subject: sdfsdf Date: Mon, 22 Mar 2004 10:33:26 +0100 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_001B_01C40FF9.1C3FC0B0" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2800.1106 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 X-UIDL: QHB!!1V1"!e+Y!!0E="! Status: RO ','This is a multi-part message in MIME format. ------=_NextPart_000_001B_01C40FF9.1C3FC0B0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable sdfsdfsdfsdfsdfsd ------=_NextPart_000_001B_01C40FF9.1C3FC0B0 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
sdfsdfsdfsdfsdfsd------=_NextPart_000_001B_01C40FF9.1C3FC0B0-- '

1. Frage:
Also erst mal bin ich etwas verwiert warum dieser einzelnde RegExp funktioniert.

$regex="/Subject: (.*)/";

Wenn ich mir das Ergebnis davon ausgeben lasse ist wirklich das subject drin. (Warum ist nicht der ganze Teil der Mail nach "Subject:" drin, müßte doch wegen .* , oder?)

2Frage:
Wie in Frage 1 schon gesagt funktionieren die Regexp einzelnd, aber ich kann die nicht verbinden.

$regex="/Subject: (.*)/";
//$regex="/Date: (.*)/";
//$regex="/From: (.*)/";

Ich möchte halt das ich die in einem Ausdruck zusammen fasse
wie $regex="/Subject: (.*)Date: (.*)From: (.*)/"; aber damit findet er gar nichts?

Also wie könnte ich die drei einzeln funktionierenden pattern verknüpfen?

3Frage:
Wie filter ich den eigentlichen Text der Mail?
Habs hiermit probiert, aber das ging nicht?
$regex="/Content-Transfer-Encoding: quoted-printable(.*)/";

Wäre nett wenn ihr mir meine Fehler zeigen würdet.

MFG
Schnaps

  1. Hi,

    (Warum ist nicht der ganze Teil der Mail nach "Subject:" drin, müßte doch wegen .* , oder?)

    der Punkt matcht - wenn man nicht entsprechend anderslautende Angaben macht - auf jedes Zeichen _bis auf den Umbruch_. Damit dürfte sich Deine nächste Frage auch ergeben haben. Bedenke übrigens, dass Headerzeilen keiner zwangsläufigen Reihenfolge unterliegen.

    Wie filter ich den eigentlichen Text der Mail?

    Der Header endet auf eine Leerzeile. Der Body kann Multipart-Daten enthalten und benötigt somit im Zweifel weiteres Parsing.

    Habs hiermit probiert, aber das ging nicht?
    $regex="/Content-Transfer-Encoding: quoted-printable(.*)/";

    Was hat das denn mit dem Mailtext zu tun?

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes