Mailbox via PHP auslesen

Loveboat

Erfahrenes Mitglied
Hallo zusammen,

ich hätte da mal eine Frage:

Kann man mittels PHP eine Mailbox auslesen und die übermittelnden Daten wie Absender, Betreff und Inhalt auslesen****

Der Webserver inkl. PHP5 und MySQL sowie der Mailserver wären auf dem gleichen Server (Ubuntu Lamp).

Sinn dieser Frage:
Ich möchte Benutzern die Möglichkeit schaffen, spezielle Informationen per Email an an den Server zu senden, welche dann in eine Datenbank aufgenommen werden sollen.

Danke und Gruß
Loveboat
 
Du könntest es mit der Funktion [phpf]imap_open[/phpf] versuchen.
Hier habe ich z.B. auch einen Beispielcode gesehen, an den du dich vielleicht orientieren kannst..
 
Das Problem an der ganzen Sache ist, dass
PHP:
    $body = imap_body($mailbox,$i);
bei Multipart-Email nicht so ganz funktioniert, zumindest hab ich das noch so in Erinnerung... Wenn du es nicht hinbekommst hab ich auch noch irgendwo ne Klasse rumliegen, die das kann - wenn auch wahrscheinlich nicht sehr sauber :D
 
Hi,

so bin am verzweifeln, es funktioniert nicht..... :-(

Mein Server läuft, kann lokal via IMAP SSL auf Port 993 abrufen, aber mit dem Script geht gar nix.

Habe mal bei php.net ein Script genommen (auch das was ComFreek angeboten hatte), aber keine Chance.
Immer wenn ich die Datei im Browser aufrufe heißt es, die Seite gäbe es nicht. Wenn ich im PHP-Code aber nur ein einfaches
PHP:
echo "Hello World"
ausgebe, dann bekomm ich es angezeigt. Mag mein Server diese Funktion evtl. nicht? Wo kann ich prüfen ob mein Server imap_open mag?Was kann ich überhaupt prüfen warum die Seite nicht funktioniert?

Hoffe jemand weiß mir zu helfen.

Danke und Gruß
Loveboat
 
Was heißt, du bekommst eine Meldung, das die Seite nicht existiert? Bekommst du Fehler-Code 404? Was sagen deine Webserver-Logfiles?

Du schreibst, dass du php-imap installiert hast. Hast du danach den Apache-Dienst neugestartet oder macht das Ubuntu von sich aus?

Prinzipiell könntest du mal eine phpinfo()-Datei anlegen, und da nach imap suchen, sollte IMHO unter extensions zu finden sein.

Ich kenne mich mit Ubuntu nicht so dolle aus. Aber ich habe mal das hier gefunden:

http://forum.ubuntuusers.de/topic/php5-und-das-imap-modul/?highlight=mod#post-2023255
 
Hi saftmeister,

danke für Dein Feedback. Habe mal nachgeschaut, eine imap.ini gab es bei mir, auch das Modul war schon installiert. Hatte auch schon den gesamten Server neugestartet was keinen Erfolgbrachte. Habe jetzt mal den Apache manuell mittels "/etc/init.d/apache2 restart" durchgestartet und siehe da, ich habe jetzt einen Abschnitt "IMAP" in meiner PHPInfo, was vorher nicht da war. Frage mich jetzt nur, ob nach einem Neustart des Servers die Funktion wieder aufgehoben ist.

Gruß
Loveboat
 
Frage mich jetzt nur, ob nach einem Neustart des Servers die Funktion wieder aufgehoben ist.

Das will ich mal stark bezweifeln. Bei der Installation der Extension muss der Webserver natürlich neu gestartet werden. Offensichtlich macht das deb das nicht.

Damit sollte das Problem behoben sein. Kannst es ja gern noch mal testen durch den gleichen Befehl. Oder auch den Rechner neu starten.
 
Hallo saftmeister,

danke für Dein feedback, der Server läuft auch nach Restart wunderbar. IMAP geht auch.
Habe auch gleich mal ein paar IMAP-Funktionen ausprobiert. Hier habe ich aber ein "Wissens"-Problem.

Wie kann ich auf die Array-Elemente des Objektes zugreifen, welches ich mit z.B.

PHP:
imap_fetch_overview($mbox,$uidArray[$i],FT_UID);

zurückgeliefert bekomme****

Ergebnis: array(1) { [0]=> object(stdClass)#1 (15) {....}

Gibt es hierzu ein kleines "Handbuch" damit ich mein Wissen erweitern kann?

Danke und Gruß
Loveboat
 
Array bedeutet, du hast eine Liste mit x Elementen, in diesem Fall ein Element. Das Element selbst hat natürlich auch einen Typ. Das kann z.B. ein String, ein Array, Int, oder wie in diesem Fall ein Object sein.

Das Objekt selbst hat Methoden und Eigenschaften. Es handelt sich um ein Objekt vom Typ stdclass, also kein spezielles sondern die Grund-Form aller Objekte. Angenommen, es ist ein stdclass-Objekt und hat die Eigenschaft (Member-Variable) 'foo'. Dann greifst du so darauf zu:

PHP:
echo $objekt->foo;

Da es sich hier um ein Objekt innerhalb eines Arrays handelt, musst du über das Array auf das Objekt und anschließend auf die Eigenschaft zugreifen:

PHP:
echo $array[0]->foo;

Du kannst aber auch zuerst über das Array iterieren, das bedeutet, eine Schleife, die bei jedem Durchlauf das nächste Feld selektiert:

PHP:
foreach( $array as $element )
{
  echo $element->foo;
}

Falls ein spezielles Objekt (alles andere als stdclass) vorliegt, bietet dies meistens noch Methoden an. Auf diese greift man dann so zu:

PHP:
foreach( $array as $element )
{
  echo $element->methode();
}

So das als kleine Einfürung. Es gibt noch mehr über Klassen und Objekte zu lernen.

Gerne beantworten wir dir hier noch mehr Fragen, aber versuche, zunächst alleine auf die Lösung zu kommen und vor allem, bitte keine Threads, die mehrere Themen behandeln, sonst verliert man den Überblick.

PS: In der Dokumentation zu imap_fetch_overview findest du auch das Layout der Rückgabe-Objekte.
 
Zuletzt bearbeitet:
Zurück