POP3 Abfrage-Problem (wiedermal)

Nagilo

Mitglied
Hallo,

sicherlich ein oft gehörtes Thema hier, aber leider haben mir alle bisherigen Beiträge nicht weitergeholfen.

Ich möchte mir ein kleines PHP Script schreiben, welches mir einfach nur anzeigt, welche Mails auf dem Server liegen.

Dazu kurz folgender Code zum Anmelden:

// POP3-Server
$host = "my-host.de";
$port = "110";
// User-Daten
$user = "login";
$passwort = "pass";
// Connect to Mailbox
$mailbox = imap_open("{".$host."}INBOX","$user","$passwort");

Leider geht das nicht. Ich bekomme immer folgende Fehlermeldung:

Warning: imap_open(): Couldn't open stream {my-host.de}INBOX in email.php on line 11

Über die Funktion imap_errors() bekomme ich dann noch folgendes heraus:
Certificate failure for my-host.de: self signed certificate: /C=--/ST=SomeState/L=SomeCity/O=SomeOrganization/OU=SomeOrganizationalUnit/CN=localhost.localdomain/Email=root@localhost.localdomain

Die Struktur kenne ich zwar, aber ich habe keine Ahnung was das mit POP3 zu tun hat. Leider scheitere ich somit schon an der Anmeldung.

Selbst imap_open("{my-host.de/pop3:110}INBOX","$user","$passwort");

Bemerke: /pop3

bringt keine Besserung.

Kann mir jemand weiterhelfen?

Vielen Dank im Voraus
 
Hast Du schon mal eine phpinfo() auf Deinem Server gestartet? Ich hatte ein ähnliches Problem was daran lag, das PHP ohne "--with-imap" kompiliert war.

Die Imap funktionen von PHP beziehen sich auch nicht nur auf IMAP Befehle. POP geht ebenso.

Läßt Du das Skript auf einem Intranet Server oder richtig im Internet laufen? Es könnte sonst auch noch daran lieben das der INTRANET Server die IP nicht auflösen kann weil der DNS nicht richtig läuft oder eine Firewall zu fett ist.
 
Danke für die Antwort.

Also phpinfo sagt folgendes:

... '--with-imap=/usr' '--with-imap-ssl' ...

Ich lasse das direkt im Internet, also auf meiner Domain, laufen. Ich checke gleich mal ob er die Namen nicht korrekt auflösen kann.

PS: Direkt mit der IP statt dem Namen ging leider auch nicht.
 
Zuletzt bearbeitet:
Probier doch mal dieses skript kurz! Das hat bei mir dann in letzter konsequenz gefunzt.

PHP:
$mbox = @imap_open("{pop.my-host.de/pop3:110}INBOX" , "login", "pass");
if ($mbox){
echo ("<b>Sie sind mit dem Postfach verbunden!</b><P><P>");
}else die ("Es kann keine Verbindung mit dem Postfach aufgenommen werden");

ich weiss allerdings nicht, ob das mit "--with-imap-ssl" funktioniert, zudem weiss ich den Unterschied nicht zu "--with-imap". Vielleicht läßt imap-ssl nur auf POPs einen connect zu.
 
Einen Tipp an Nagilo: Du solltest einen PHP Editor benutzen, der Farben im Quelltext darstellt benutzen. Als ich dein Scipt bei PHPEdit eingefügt habe, habe ich gesehen, dass diese Zeile:
PHP:
$mailbox = imap_open("{".$host."}INBOX","$user","$passwort");
so
PHP:
$mailbox = imap_open("{".$host."}INBOX","".$user."","".$passwort."");
heißen muss, so hat es bei mir zumindestens geklappt.

Was steht denn dann eigentlich in $mailbox drin? Wie kann man die Daten ausgeben?

mfg
 
Hi,

du bekommst dann ein ziemlich cooles Objekt, das Du komplett durchsuchen kannst!

PHP:
<?
$mbox = @imap_open("{pop.my-host.de/pop3:110}INBOX" , "login", "pass"); 
if ($mbox){ 
echo ("<b>Sie sind mit dem Postfach verbunden!</b><P><P>"); 
}else die ("Es kann keine Verbindung mit dem Postfach aufgenommen werden");

for($i = 1; $i < imap_num_msg($mbox); $i++){
     $oHeader = imap_header($mbox, $i);
  ?><PRE><? print_r($oHeader) ?></PRE><?  
}
imap_close($mbox);
?>
Mit dem imap_header kannst Du dann die Kopfdaten der Mails auslesen. Es gibt dann noch Befehle für den Body....... ist schon cool. Kannst so ein komplettes Web-Interface für Email konto bauen. Das "PRE" sorgt nur dafür das die print_r Sachen gut zu lesen sind. Das kannste dann natürlich nachher als Array alles einzelnd ansteuern.
 
LÖSUNG gefunden !

Nachdem ich jetzt nochmal 2 Stunden über Google gesucht habe, bin ich direkt in den Kommentaren zu imap_open() unter php.net fündig geworden.

Das Problem ist wohl weithin bekannt und liegt daran, daß auf dem Server dann RedHat verwendet wird.

Für den Mailserver muß daher folgende Zeile verwendet werden:

$host = "localhost:110/pop3/notls";

Ich hab jetzt leider keine Ahnung wofür das /notls steht, aber es funktioniert. Es gibt wohl auch noch /norsh.

Jedenfalls ging eine imap_open Verbindung zu einem anderen POP3 Konto auch ohne die Option problemlos.

Hoffe es hilft auch anderen weiter, die vor dem gleichen Problem stehen.
 
Zurück