Kann mit AutoIt nachsehen ob eMail´s auf einem Pop3-Postfach sind. Habe schon ein paar Stunden gesucht und noch nichts gefunden. Mir würde es reichen wenn ich die Betreff-Zeile auslesen könnte.
eMail´s holen mit AutoIt
-
RWS1999.de -
20. Mai 2006 um 20:51 -
Geschlossen -
Erledigt
-
-
- Offizieller Beitrag
Hallo und herzlich Willkommen,
ich habe da was im englischen Forum gefunden http://www.autoitscript.com/forum/index.php?showtopic=21820&hl=pop3. Schau dir mal die Funktion _mailchk in email.au3 an
-
Hallo bernd670,
ich habe mir die Seite angesehen und auch das Script, es überprüft aber nur ob eMail´s da sind. Damit ist mein Problem noch nicht ganz gelöst. Trotzdem vielen Dank für den Tip, damit kann ich ersteinmal testen ob eMail´s da sind. Jetzt muss ich nur noch herausfinen wie man die Betreff-Zeile lesen kann.
-
hi,
im Zweifel findest Du die Antwort im RFC 1939 :tongue:. Man kann mit dem Befehl TOP von einer Nachricht die ersten x Zeilen abrufen.
Zitat
TOP msg nArguments:
a message-number (required) which may NOT refer to to a
message marked as deleted, and a non-negative number
of lines (required)Wenn Du die Zeilen abrufst und dann nach der Zeile "Subject: xyzString" suchst, hast Du auch den gewünschten Betreff.
-
Hi jonk,
wo finde ich den Befehl TOP. War wohl gut gemeint, aber das hilft mir nicht weiter, eine deutsche Übersetzung wäre nicht schlecht.
-
Hi RWS1999.de,
also, wenn man sich auf einem POP3-Server eingeloggt hat, kann man bestimmte Befehle absetzen. Hier die Übersetzung:
TOP msg(Nummer der Nachricht) n(Anzahl der Abzurufenden Zeilen)
Parameter:
msg = Nummer einer Nachricht (erforderlich) , die nicht zum Löschen vorgesehen ist.
n = eine posivtive ganze Zahl (erforderlich)Eine deutsche Zusammenfassung findest Du unter http://fiatlux.zeitform.info/technische_infos/e-mail_prot.html
Die RFC (Request for Comments) konnte ich spontan nicht in deutsch finden.
Du müßtest also die Funktion chkmsg() aus email.au3 so umbauen das nicht nur die Anzahl der Nachrichten abgerufen werden. Wenn Du die Anzahl der Nachrichten ermittelt hast könntest Du mit einer Schleife die Nachrichten durchlaufen und jeweils mit TOP den Betreff herausfinden.
-
- Offizieller Beitrag
Hallo,
ich habe mal die Funkiton _mailchk so abgeändert, das sie die Header aller Mail's aus dem Postfach ausliest und anzeigt:
Spoiler anzeigen
Code
Alles anzeigen$Pop3Svr="pop.gmx.net" $Pop3User="" $Pop3Pass="" _ReadMailHeaders($Pop3Svr,$Pop3User,$Pop3Pass) Func _ReadMailHeaders($popsrv, $srvuser, $srvpass) Local $mail, $i, $disp, $recv, $str, $count, $check, $str1, $err, $recpoint, $bit, $mcount, $recpoint1, $error TCPStartup () Global $socket = TCPConnect (TCPNameToIP ($popsrv), 110) If $socket = -1 Then MsgBox(8240, 'Error', 'Error; could not connect to server ' & $popsrv, 5) Return EndIf Do $recv = TCPRecv ($socket, 512) Until $recv <> "" $recv = "" TCPSend ($socket, "user " & $srvuser & @CRLF) Do $recv = TCPRecv ($socket, 512) Until $recv <> "" $recv = "" TCPSend ($socket, "pass " & $srvpass & @CRLF) Do $recv = TCPRecv ($socket, 512) Until $recv <> "" $err = StringInStr($recv, "-ERR") If $err > 0 Then MsgBox(4112, "authentication failed", "Invalid User Name or Password for " & $popsrv, 8) TCPSend ($socket, 'quit' & @CRLF) TCPCloseSocket ($socket) $error = $error + 1 Return EndIf $recv = "" TCPSend ($socket, 'list' & @CRLF) Do $recv = TCPRecv ($socket, 10240) $recpoint = StringInStr($recv, ".") Sleep(1000) Until $recpoint > 0 $str = StringSplit($recv, @LF) $str1 = StringSplit($str[1], " ") $check = StringIsDigit($str1[1]) If $check = 1 Then $count = 0 $bit = 0 Else $count = 1 $bit = 1 EndIf Do $count = $count + 1 $str1 = StringSplit($str[$count], " ") $check = StringIsDigit($str1[1]) Until $check = 0 If $bit = 1 Then $mcount = $count - 2 Else $mcount = $count - 1 EndIf For $count = $mcount - 1 To 0 Step - 1 TCPSend ($socket, 'top '& $count & ' 0' & @CRLF) Do $recv = TCPRecv ($socket, 10240) Until $recv <> "" if MsgBox(4, "Header von Mail "& $count, $recv & @CRLF & @CRLF & "nächsten Header lesen ?" ) = 7 then ExitLoop $recv = "" Next TCPSend ($socket, 'quit' & @CRLF) TCPCloseSocket ($socket) Return $mcount EndFunc
nicht vergessen $Pop3Svr, $Pop3User und $Pop3Pass anzupassen!
Den Top-Befehl, wie ihn @jonk bereits beschrieben hat, findest du in Zeile 78, wenn n = 0 ist wird nur der Header ausglesen.
Erläuterung zur Ausgabe:
- X-Flags -> kann man auswerten um z.B. festzustellen ob die Mail ungelesen ist
- Subject -> ist die Betreffzeile
- From -> hat die Mail geschickt -
Hi jonk,
ich werde das später nochmal versuchen, zur Zeit werde ich das Problem anders lösen.
-
Da war wohl bernd670 etwas schneller, beim antworten, werde das auch nochmal probieren. Vielen Dank auch nochmal an bernd670.