[PHP] Messages scheiden uit een raw-text mbox

Pagina: 1
Acties:

Onderwerpen


  • pelleke
  • Registratie: Maart 2003
  • Laatst online: 08-11-2024

pelleke

Aut viam inveniam aut faciam

Topicstarter
Vraagje:

Ik heb een rauw tekstbestand waar meerdere e-mails instaan (met headers en al :)). Een voorbeeld kun je zien op http://www.sterrenkunde.nl/jwg/amersfoort/aft-list.mbox.txt

Nu wil ik simpelweg 1 mailtje (dus: header+body) scheiden van de rest. (Bij voorkeur van bovenaf.)

Ik heb dit geprobeerd:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
   include("decodemail.php");
   $message = new DecodeMessage;
   $mbox = gifx('aft-list.mbox.txt');
   $message->InitMessage($mbox);
   $ct = $message->ContentType();
   $cd = $message->ContentDisposition();
   $body = $message->Body();

   if (eregi('multipart',$ct['type'])) {
   // bericht is multipart
      $b = $ct['boundary'];
      $parts = explode($b,$body);
      foreach ($parts as $key=>$value) {
               $value = trim($value);
               echo "$key = $value \n\n----\n\n";
      }
   }

Decodemail.php is eigenlijk gemaakt voor 1 message, maar een hele mbox werkt ook wel, dan paktie de bovenste. In dit script gebeurt het volgende:
Function gifx opent een file in een string.


Als een msg multipart is, drukt ie een voor een alle parts af, en het allerlaatste watie uitpoept is de rest van de hele mbox, dus beginnend met de header van de volgende mail. Precies wat ik nodig heb, zou je zeggen.

Maar wat nou als een keer eens een message niet multipart is?

Dit heb ik geprobeerd
PHP:
1
$parts = explode("\n\n",$body);

maar waar herken je dan het begin van een header aan?
From: blabla@xxx begintie mee, maar die tekst zou net zogoed in een text/plain email kunnen staan op een nieuwe alinea...

Weet iemand een betere manier?

[ Voor 8% gewijzigd door pelleke op 11-12-2003 12:18 ]


Verwijderd

Kijk eens op:
http://www.qmail.org/man/man5/mbox.html

Daar staat hoe de individuele mailtjes in een mbox zitten...