[PHP] CSV-Export aus E-Mail Text!

WeSt

www.ps3heaven.de
ID: 91990
L
8 August 2006
499
47
Hallo zusammen,

ich benötige einen kleinen CSV Export, der sich die Daten aus einer E-Mail sammelt.

Ich schicke also eine Mail an eine Mail Adresse auf meinem Server.
Diese ist folgendermaßen aufgebaut:

vorname|<-KLVorname->
nachname|<-KLNachname->
strasse|<-KLStrasse->
zusatz|<-KLAnschrift2->
plz|<-KLPLZ->
ort|<-KLOrt->
country|<-KLLand->
telefon|<-KTelefon->
email|<-KEmail->
referenz|<-ReNr->

In den Variablen stehen entsprechende Daten, wobei allerdings nicht alle Felder gefüllt sein müssen. Gerade Telefon kann auch leer sein.

Diese Mail, können auch mehrere sein, aber niemals mehrere Datensätze in einer Mail, soll nun aus dem Postfach abgerufen und ausgewertet werden.
Die Inhalte der Variablen sollen dann auf dem Server als CSV-Datei mit folgendem Aufbau gespeichert werden:

Vorname (20);Nachname/Firmenname (25);Adresszusatz (20);Straße (27);Hausnummer (5);PLZ (5);Ort (25);Tel. Vorwahl (6);Telefonnummer (8);E-Mail Adresse (80);Kundenreferenznummer (20);

Zwischend den einzelnen Datensätzen muss ein Zeilenumbruch sein.

Das gannze soll in eine Datei geschrieben werden, so lange, bis keine Mails mehr da sind.

Das Script soll manuell aufgerufen werden.
Design ist nicht notwendig.
Einfach nur ein Button "Start" und wenn es fertig ist ein Link zum Download der CSV.

Nun bin ich aber ein lausiger Programmierer.
Na ja, zumindest habe ich es hinbekommen, dass ich Zugriff auf das Postfach erhalte und die Mails zähle....aber das ist nicht Sinn der Sache.

Code dafür sieht so aus:

$mail=array();
$mailbox = "{mail.xxx.de/pop3:110}INBOX";
$username = "xxx";
$password = "xxx";


$MailboxPointer = imap_open($mailbox, $username, $password);
imap_sort($MailboxPointer, SORTARRIVAL, 0);

if($MailboxPointer)
{
$check = imap_check ($MailboxPointer);
if($check)
{
$count=$check->Nmsgs;
}
echo $count;
}

?>

Aber wie erreiche ich es, dass nun der Text ausgelesen und das Ergebnis formatiert gespeichert wird?
Kann mir dazu jemand eine Hilfestellung, am liebsten sogar Lösung geben?
 
Ok, ich hab es jetzt bedingt hinbekommen.

Der Code ist folgender:

<?

$mail=array();
$mailbox = "{mail.xxx.de/pop3:110}INBOX";
$username = "xxx";
$password = "xxx";


$MailboxPointer = imap_open($mailbox, $username, $password);
imap_sort($MailboxPointer, SORTARRIVAL, 0);

if($MailboxPointer)
{
echo"Verbindung zum Mail-Postfach hergestellt!<br><br>";
echo"Nachrichten im Posteingang:<br><br>";

$anzahlMails = imap_num_msg ($MailboxPointer);

for($i=1;$i<$anzahlMails+1;$i++)
{
// UID der Mail ermitteln
$mailUID = imap_uid($MailboxPointer, $i);

$mail_fetch=imap_fetchbody ($MailboxPointer,$i,$mailUID);
$mail_body=imap_utf8 ($mail_fetch);

echo $mail_body;
echo "<p>";
}
}
else
{
echo"Keine Verbindung zum Mail-Postfach!";

}

?>

Nun aber ein Problem.
Ich habe jetzt 4 Mails im Postfach.
Ausgegeben bekomme ich aber nur die ersten 2 Mails und davon die erste ohne Absätze.
Also folgendermaßen:

Verbindung zum Mail-Postfach hergestellt!

Nachrichten im Posteingang:

vorname|Max nachname|Mustermann strasse|Musterstrasse 1 zusatz| plz|12345 ort|Musterstadt country|D telefon| email|mustermann@mustermann.de referenz|0

vorname|Max2
nachname|Mustermann2
strasse|Musterstrasse 2
zusatz|
plz|12345
ort|Musterstadt
country|D
telefon|
email|mustermann2@mustermann.de
referenz|0

Ich habe nur keine Ahnung, woran das liegt.
Warum wird der erste Datensatz ohne Formatierung ausgegeben?
Und warum werden nur 2 Datensätze ausgegeben und Datensatz 3 und 4 nicht mehr?

Wäre über jede Hilfe echt erfreut.