PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : eml elemente in DB übertragen


Redmen
26.09.2006, 10:30:21
hallo
ich weiss nicht ob ich hier in dieser rubrik richtig bin, vielleicht geht das noch unter grundkenntnisse, aber mein wissen in PHP endet an dieser aufgabe.
vielelleicht hat jemand mitleid und hilft einem schüler wie mir.

ich suche seit ein paar tagen eine lösung, wie ich ms-mails im eml-format auslesen kann, darin bestimmte elemente auslese und diese dann in eine DB ablegen kann.
ich schon ein paar versuche gemacht aber komme nicht weiter:

<?
$datei = file("test.eml", "r");


foreach ($datei as $line_num => $line) {
echo " " . htmlspecialchars($line) . "<br>\n";
}

$ausgabe = $line-> get_in_out(From:'.,'>');

echo "$ausgabe";
?>

das fettmarkierte muss ich auslesen können aus dem file:

Received: by dexab001.testschule.de
id <01C69F74.E7661ED0@dexab001.testschule.de>; Tue, 4 Jul 2006 16:19:47 +0200
Content-class: urn:content-classes:appointment
Subject:Test
Date: Tue, 4 Jul 2006 16:19:47 +0200
Message-ID: <8929A024AB7CF645BF9F196879F73CBF040801@dexab001.testschule.de>
X-MS-Has-Attach:
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="----_=_NextPart_001_01C69F74.E7661ED0"
X-MS-TNEF-Correlator:
Thread-Topic: Test
Thread-Index: AcafdOdmn1M47YHSTpytRnaMIRGy4A==
From: "Newton Schule" <newton@testschule.de>
X-MimeOLE: Produced By Microsoft Exchange V6.5.6944.0
To: "admin a. admin" <admin@testschule.de>,
"root root" <root@testschule.de>

This is a multi-part message in MIME format.

------_=_NextPart_001_01C69F74.E7661ED0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: binary

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 6.5.6944.0">
<TITLE>Test</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P><FONT SIZE=2 FACE="Arial">Hai</FONT>
</P>
<BR>

</BODY>
</HTML>
------_=_NextPart_001_01C69F74.E7661ED0
Content-class: urn:content-classes:appointment
Content-Type: text/calendar;
method=REQUEST;
charset="utf-8"
Content-Transfer-Encoding: 8bit

BEGIN:VCALENDAR
METHOD:REQUEST
PRODID:Microsoft CDO for Microsoft Exchange
VERSION:2.0
BEGIN:VTIMEZONE
TZID:(GMT+01.00) Sarajevo/Warsaw/Zagreb
X-MICROSOFT-CDO-TZID:2
BEGIN:STANDARD
DTSTART:16010101T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=10;BYDAY=-1SU
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;WKST=MO;INTERVAL=1;BYMONTH=3;BYDAY=-1SU
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
DTSTAMP:20060704T141948Z
DTSTART;TZID="(GMT+01.00) Sarajevo/Warsaw/Zagreb":20060720T100000
SUMMARY:Test
UID:040000008200E00074C5B7101A82E0056869700000B046FDAA859FC60102279300 0000000
010000000DE856EF7C346A946BA6CAC897A89BDEB
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;X-REPLYTIME=20060704T1454230
Z;RSVP=TRUE;CN="admin a. admin":MAILTO:admin@testschule.de
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=ACCEPTED;X-REPLYTIME=20060704T1454230
Z;RSVP=TRUE;CN="root root":MAILTO:root@testschule.de
ORGANIZER;CN="Newton Schule":MAILTO:newton@testschule.de
LOCATION:Ubundu
DTEND;TZID="(GMT+01.00) Sarajevo/Warsaw/Zagreb":20060720T103000
DESCRIPTION:Hai\N\N\N
SEQUENCE:0
PRIORITY:5
CLASS:
CREATED:20060704T34543925Z
LAST-MODIFIED:20060704T145706Z
STATUS:CONFIRMED
TRANSP:OPAQUE
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INSTTYPE:0
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-OWNERAPPTID:91254385952
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:REMINDER
TRIGGER;RELATED=START:-PT00H15M00S
END:VALARM
END:VEVENT
END:VCALENDAR

------_=_NextPart_001_01C69F74.E7661ED0--


es würde mich freuen wenn jemand kurz das script ergänzt resp. ein beispiel wie ich diese elemente rausfiltern kann.
der rest kann ich selber erstellen wie z.b. SQL, insert into bla-bla.

besten dank schon im voraus für die hilfe.

Redmen

Opendix
28.09.2006, 19:55:59
Nun ich würde das ganze nach Zeilen aufsplitten und dann kannst du jede Zeile durchlaufen und prüfen ob es sich um eine gesuchte Zeile handelt! (entweder mit nem Regex oder mit irgendwelchen String Funktionen....)