(E-MAIL) POP3-Email via Browser-Client (Perl) auslesen....
Christian Schnagl
Hallo Forum,
hat jemand Erfahrung damit, wie man mittels Perl seine POP3-Emails abholen kann? Die vorhandenen Lösungen bei "cgi-ressources" setzen alle diverse installierte Module voraus. Ich habe aber nur einen FTP-Zugang für HTML und CGI.
Ein Script ("anyemail") setzt dies nicht vorraus ist aber 64k groß und von oben bis unten voll mit solchen Anweisungen:
my ($aGz, $cA, $curlev, $gK) = @_;if (@{$aGz->{aFz}}) {my $i=0;for(@{$aGz->{aFz}}) {
gA($_, $cA, "${curlev}_$i", $gK);
Da meine Intelligenz für 64k von diesem Code nicht ausreicht und ich auch im Forumsarchiv nichts dergleichen gefunden haben, wäre ich um ein paar weiterführende Links schon sehr dankbar!
Gruß
Christian
PS: Eigentlich bräuchte ich bloß den Teil des Scripts, bei dem es sich am Server anmeldet und die neue E-Mail in einen String liest.
Hallo Christian,
ich habe eine Script gefunden, das nur das Socket-Modul benötigt, wenn Du Glück
hast, ist das standardmäßig installiert (auf meinem Server ist es jedenfalls so):
http://mmc.et.tudelft.nl/~richie/popcgi.txt
Grüße
Stephan
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.
Hallo Forum,
hat jemand Erfahrung damit, wie man mittels Perl seine POP3-Emails abholen kann? Die vorhandenen Lösungen bei "cgi-ressources" setzen alle diverse installierte Module voraus. Ich habe aber nur einen FTP-Zugang für HTML und CGI.
Müßte normalerweise reichen;
Ich denke, du willst nen Programm instalieren, und damit Mails lesen und schreiben (über den Browser)
Ein Script ("anyemail") setzt dies nicht vorraus ist aber 64k groß und von oben bis unten voll mit solchen Anweisungen:
my ($aGz, $cA, $curlev, $gK) = @_;if (@{$aGz->{aFz}}) {my $i=0;for(@{$aGz->{aFz}}) {
gA($_, $cA, "${curlev}_$i", $gK);
Die brauchen dich eigentlich nicht zu interessieren;
du mußt nur die ersten paar Zeilen anpassen; wenn es überhaupt nötig ist;
dann uploaden, und es müßte laufen;
Falls du irgenwelche Konfigurationsprobleme hast, mail mich einfach an;