Abrufen und verarbeiten von Mails (MIME), ev. Klasse gesucht

B

BKBB

Hallo,
für ein Projekt programmiere ich ein Script^, dass die E-Mails von einem pop Server abholt, dort löscht und in eine SQL Datenbank überträgt.
Dazu soll die Mail aber von "überflüssigem" MIME-Ballast befreit werden, d.h. ich brauche Betreff, Datum, Text (mit Formatierungen etc.) und Attachments der Mail. Erstere beide machen mir keine Probleme, beim Text fangen die Probleme an und bei den Attachments hört meine Geduld dann auf.
Was mir helfen würde wäre zum einen ein schon existentes Script oder eine Klasse, mit der sich meine Wünsche einfacher erreichen lassen:
z.b. function get_text_von_meiner_mail oder function get_attachments_von_meiner_mail

Außerdem: Wie gehe ich mit mehreren Attachments um?

Ich bin jetzt schon seit geraumer Zeit an diesem Problem, komme einfach nicht weiter und freue mich über jeden Tip und jede Anregung.

Vielen Dank,
Markus
 
Hallo,

ich kan dir nun beim Code nicht helfen. Könntest du aber verraten, wie du die Emails von dem POP3 Fach abholst und sie dan speicherst? Da hab ich letztens ein Thema geschrieben aber keiner konnte mir so richtig helfen. Wäre Super von dir!
 
Hi,

Hast Du schon mal bei der "Birne" nachgesehen? ;)
PEAR bietet eine umfangreiche Klassen-Bibliothek für MIME Encoding..

Ich verwende die Klasse immer zum Senden von Mime Mails.. Ist easy und es gab bisher auch noch nie Probleme.

Ob es allerdings auch Methoden zum Decoden gibt (bzw. eine Methode, die Deinen Ansprüchen genügt), musst Du Dir selbst ansehen:
http://pear.php.net/manual/en/package.mail.mail-mime.php

Ciao,
Mike
 
Du könntest folgenden Algorithmus benutzen, um die Header-Felder aus dem Inhalt zu filtern:
PHP:
<?php

	define('CRLF', chr(0x0D).chr(0x0A));

	$headerfields = array();
	$temp = split(CRLF, current(split(CRLF.CRLF, $response)));
	foreach( $temp as $key => $field ) {
		if( preg_match('/([^:]+):(.+)$/', trim($field), $matches) ) {
			$headerfields[trim($matches[1])] = trim($matches[2]);
		}
	}
	unset($temp);

?>
 
@philipcool:

Code:
  $mailbox = imap_open("{pop.gmx.net:110/pop3}INBOX","username","passwort");
  $mails = imap_fetch_overview($mailbox,"1:*", FT_UID); // Holt eine Übersicht aller Emails

  $anz = count($mails); // Anzahl der Nachrichten

  for($i=$anz-1;$i>=0;$i--)
    { // Schleife
    $value = $mails[$i];
    $body = imap_body($mailbox,$value->uid, FT_UID);
    mysql_query("INSERT INTO `mail` ( `id` , `titel` , `body` , `attachment` , `date` ) VALUES (
                 '',
                 '".$value->subject."',
                 '".$body."',
                 '',
                 '".date('Y-m-d H-i-s',strtotime($value->date))."')");

    }

  imap_close($mailbox);

Schau dir das mal an, bei mir geht es sehr gut, abgesehen von den angesprochenen Problemen. Wenn du da noch Fragen hast, meld dich.

@all: Danke für die Tipps! Ich werde mir das morgen mal zu gemüte führen! Jedenfalls hört es sich sehr vielversprechend an. Vielen Dank!
Ich melde mich dann nochmal.

Wenn jemandem trotzdem noch etwas einfällt, her damit ;-)

Einen schönen Abend noch,

Markus
 
@phillipcool:
Um eMails abzuholen benoetigst Du die IMAP-Funktionen. Auch fuer POP3 und News mittels NNTP.
Das Problem an diesen Funktionen ist, wie so oft, dass man sie im Internet wohl nicht allzu haeufig antreffen wird.
 
Hallo,

ich hab leider keine lösung für euer projekt. Nur für meins, naja..ein freund brauchte so ein befehl. ich kann damit nichts anfangen :(
 
Zurück