Email parsen



  • Ja ich wollt mal fragen wie ich am besten ne eMail parsen kann?
    Sie sieht halt so aus:

    +OK 1350 octets 
    Return-Path: 
    Received: ******************
    by web11.hosthome.de (8.12.5/8.12.5) with SMTP id h32JQjFs024222 
    for ; Wed, 2 Apr 2003 21:26:45 +0200 
    Received: (qmail 17386 invoked by uid 0); 2 Apr 2003 19:26:31 -0000 
    Date: Wed, 2 Apr 2003 21:26:31 +0200 (MEST) 
    From: paranoiac@gmx.net 
    To: admin@brain-death.net 
    MIME-Version: 1.0 
    Subject: TEST 
    X-Priority: 3 (Normal) 
    X-Authenticated-Sender: #0013134540@gmx.net 
    X-Authenticated-IP: [80.133.198.49] 
    Message-ID: <12140.1049311591@www16.gmx.net> 
    X-Mailer: WWW-Mail 1.6 (Global Message Exchange) 
    X-Flags: 0001 
    Content-Type: text/plain; charset="iso-8859-1" 
    Content-Transfer-Encoding: 8bit 
    Status: O
    

    So jetzt will ich halt wissen von wem, wohin und welches Datum, etc

    Habs schon mal probiert, aber war recht umständlich. Wie macht man das normal, wenn man ein Emailinterface programmiert?

    danke!
    cu para
    😃


  • Mod

    MIME Header ist easy:

    alles bis zur ersten newline ist header.

    bei multipart wird im header ein boundary angegeben, dieses gibt an, womit die einzelnen teile getrennt werden
    parts=split(parts=split(boundary,$body);

    die header sind auch einfach auszulesen, immer folgendes format:

    name: value\n

    sollte die nächste zeile mit einem tab (vielleicht reichen auch spaces) beginnen, dann gehört das noch zum obenstehenden feld.

    mit regexps ists easy!

    achtung bei mail adresse, die können so aussehen:
    foo@bar.com
    oder auch so
    Maxi Huber foo@bar.com
    mehrere email adresse sind mit , getrennt.

    multipart ist etwas komplizierter, denn jeder part hat seinen eigenen header.
    da steht dann drinnen wie er codiert ist (meistens base64 oder quoted_printable - für beides gibt es eine php funktion)


Anmelden zum Antworten