e-Mails parsen

kevkev

Erfahrenes Mitglied
Hallo,

Ich habe auf meinem Server qmail laufen und möchte gern mit PHP die e-Mails auslesen lassen.
Dabei verschiebt ein cronjob die mails in ein user verzeichnis, in dem ich die mails bearbeiten kann.

Eine Mail sieht meist so aus:
Code:
Return-Path: <kkettinger@gmail.com>
Delivered-To: kevink@mail
Received: (qmail 6021 invoked from network); 3 Dec 2005 14:59:34 -0000
Received: from nproxy.gmail.com (64.233.182.192)
	by h693677.serverkompetenz.net with SMTP; 3 Dec 2005 14:59:34 -0000
Received: by nproxy.gmail.com with SMTP id a25so287776nfc
	for <kevink@mail.h693677.serverkompetenz.net>; Sat, 03 Dec 2005 06:59:34 -0800 (PST)
DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws;
	s=beta; d=gmail.com;
        h=received:message-id:date:user-agent:x-accept-language:mime-version:to:subject:content-type:content-transfer-encoding:from;
	b=c329O3tQ+O2oFB(...)
Received: by 10.48.255.20 with SMTP id c20mr948785nfi;
	Sat, 03 Dec 2005 06:59:34 -0800 (PST)
Return-Path: <kkettinger@gmail.com>
Received: from ?192.168.178.23? ( [172.179.36.117])
	by mx.gmail.com with ESMTP id x24sm541879nfb.2005.12.03.06.59.33;
	Sat, 03 Dec 2005 06:59:33 -0800 (PST)
Message-ID: <4391B2D4.7080201@googlemail.com>
Date: Sat, 03 Dec 2005 15:59:32 +0100
User-Agent: Mozilla Thunderbird 1.0.6 (Windows/20050716)
X-Accept-Language: de-DE, de, en-us, en
MIME-Version: 1.0
To: kevink@mail.h693677.serverkompetenz.net
Subject: Nurn Test
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit
From: Kevin <kkettinger@gmail.com>

Tisch

Gibt es vielleicht schon Mail-Parser, bei dennen Ich z.b. ein Array mit allen Infos bekomme?
Ich könnte das mit viel Mühe auch hinbekommen, aber vielleicht gibt es ja schon soetwas :)!

gruß kevin
 
Zuletzt bearbeitet:
Allgemein ist der Aufbau einer E-Mail ganz einfach: zuerst kommen die Header-Informationen, danach zwei nacheinanderkommende Zeilenumbruch-Zeichensequenzen und danach der eigentliche Nachrichtenrumpf, der wiederum aus mehreren Teilen bestehen kann.
Dieses in seine Bestandteile aufzulösen, ist eigentlich kein große Sache.
 
Hi,

Also Ich habs soweit geschafft, mit preg_match den Betreff, den Absender und die Zeit rauszuholen.
Nun muss Ich aber noch irgendwie den Anhang rausholen, nur das wird doof, da das ja variabel bleiben muss, falls mehrere Anhänge geschickt werden.

Das wird dann schon ein wenig komplexer (für mich :p ), daher wäre so eine Klasse wirklich nicht schlecht.

Was mir komisch vorkam:
Wenn Ich mir sone Mail vom qmail domain ordner runterlade, und diese mit dem Wordpad öffne, kommts mir so vor, das auch nun \r drangehängt worden sind
Normalerweise werden bei dem notepad \r nach dem \n drangehängt (wozu auch immer) wenn man ne plain-text datei von linux öffnet, aber wie ist das bei wordpad?
Der läßt die textdatei sowiese ist, oder nicht?

Gruß Kevin
 
Zuletzt bearbeitet:
Wie holt denn dein Cronjob-Script die Mails ab?
Mit imap_header() könntes du die schon da ordentlich auslesen lassen.
Allgemein mit dem IMAP-Funktionen kannst du da sehr gut arbeiten.
 
ZodiacXP hat gesagt.:
Wie holt denn dein Cronjob-Script die Mails ab?
Mit imap_header() könntes du die schon da ordentlich auslesen lassen.
Allgemein mit dem IMAP-Funktionen kannst du da sehr gut arbeiten.
Das Problem an den IMAP-Funktionen ist leider nur, dass man die bei den meisten Hostern wohl eher nicht antrifft. Man kann ja schon gluecklich sein wenn man die FTP-Funktionen zur Verfuegung hat. ;)
 
Hi,

Also das ganze spielt sich auf meinem Root ab, ich könnte da zwar auch imap draufhauen, aber bis jetzt basiert das script eher, naja, auf dateien.
Ich mache das so:
Per vpopmail lass ich einfach alle emails in mein homeverzeichnis hauen.
Ich hab dann lauter dateien die ungefär so aussehen:
1133621976.6023.h693677,S=1450

Nun, mit einem anderem script, das ich später über nen cronjob laufen lasse, öffne ich diese datei, lese die infos raus, speichere die in ner mysql datenbank, und verschiebe die in nen anderen ordner.

Ich fand das die einfachste möglichkeit ^^.

Aber ne Klasse fürs auslesen solcher Mails gibts nicht? ( :p )

gruß kevin
 
Zurück