Also, es gibt da ein Perlmodul namens NET:POP3. Damit kannst du einfach Mails abholen. Wenn dein Provider das Ding nicht installiert hat, dann mußt du IO::Socket verwenden. Damit kannst du mit Perl eigendlich alles machen. HTTP, FTP, POP3, SMTP, NNTP, Telnet und vieles mehr. Beispielcode findest du auf meiner Homepage, aber nur für http. Das Programm nennt sich Servertest. Wenn du dich mit IO::Socket mit einem POP3-Server verbindest, dann meldet er sich z. B. mit:
+OK QPOP (version 2.53) at Server.Lokalnetz starting.
Dann kannst du dich mit:
user mein-accoutname
einloggen. Dann antwortet er:
+OK Password required for mein-accoutname.
Dann mußt du mit:
pass geheim
Dein Passwort eingeben. Dann schreibt er dir, falls das Passwort richtig war:
+OK mein-accoutname has 218 messages (2470195 octets).
Wenn du willst, kannst du dir noch mal den Mailboxstatus anzeigen lassen:
stat
Dann antwortet der Server mit:
+OK 218 2470195
Also, 218 Nachrichten mit insgesamt 2470195 Byte. Wenn du willst, kannst du jetzt mal die erste Nachricht abrufen. Das geht mit
retr 1
Dann kommt die Nachricht. Sie könnte z. B. so aussehen:
+OK 525 octets
Date: Mon, 17 May 1999 18:42:44 +0200 (MEST)
From: Mail System Internal Data MAILER-DAEMON@Server.Lokalnetz
Subject: DON'T DELETE THIS MESSAGE -- FOLDER INTERNAL DATA
X-IMAP: 0925498606 0000000213
X-UIDL: efa2929a0cf14bc37b7838b67eb48c4e
Status: RO
This text is part of the internal format of your mail folder, and is not
a real message. It is created automatically by the mail system software.
If deleted, important folder data will be lost, and it will be re-created
with the data reset to initial values.
.
Die 1. Zeile ist noch mal ne Bestätigung, das die Nachricht existiert, und wie lang sie ist. Die letzte Zeile ist immer ein Punkt. Wenn ne Zeile mit nur einem Punkt kommt, ist also die Nachricht zu Ende. Wenn du willst, kannst du nun die Nachricht mit
dele 1
löschen. Dann antwortet der Server z. B.
+OK Message 1 has been deleted.
Jetzt kannst du dich mit
quit
abmelden. Der Server wird dann etwas wie
+OK Pop server at Server.Lokalnetz signing off.
antworten.
Kurz noch eine Anmerkung. Wenn der Server mit +OK anfängt, bedeutet das, das dein Kommando erfolgreich war. Wenn er mit -ERR anfängt, dann ist was schiefgegangen wie z. B. bei dem Versuch, ne Nachricht zu löschen, die schon gelöscht wurde. Um diese Kommandos mit Perl zu senden braucht su wie bereits gesagt das Modul IO::Socket, das aber normalerweise bei Perl dabei ist. Etwas Beispielcode ist wie bereits gesagt auf meiner Homepage.