Also habe mir nochmal die gleiche UDF von jemand anderem angesehen und dort wird halt nen Array zurückgegeben.
Mit Arraydisplay kann ich nochmal probieren.
Oder mache irgendetwas anderes flasch?
Also habe mir nochmal die gleiche UDF von jemand anderem angesehen und dort wird halt nen Array zurückgegeben.
Mit Arraydisplay kann ich nochmal probieren.
Oder mache irgendetwas anderes flasch?
So ich habe nochmal nen bisschen weiter probiert.
pop3_getmailraw gibt anscheinend ein Array zurück. Wie kann ich dies z.B. in einer .txt darstellen lassen?
und wie kann ich das dann weiter verarbeiten?
Also ich habe jetzt mal die UDF im Spoiler:
;===============================================================================
;
; Name: POP3 UDF
; Vorraussetzungen: TcpStartup () am Anfang des Skripts
; Beschreibung: Eine UDF um mit AutoIt auf einen POP3 Server zuzugreifen.
; Autor: Carsten8
;
;===============================================================================
Global $csocket
Global $sMsg
;===============================================================================
;
; Beschreibung: Verbindet sich zu einem POP3 Server und loggt sich ein.
; Parameter: $sServer - Adresse des Pop3-Servers
; $iPort - Port über den Verbunden werden soll (meistens 110)
; $sUser - Benutzername zum einloggen (bei ua. web.de ist es die E-Mail Adresse)
; $sPass - Passwort des E-Mail Accounts
; $timeout - Gibt an, wie lange auf eine Antwort gewartet werden soll (Standart: 10 Sek.).
; Rückgabewerte: Erfolg: Gibt 1 zurück.
; Fehler: Gibt 0 zurück zu setzt @error:
; 1 = Timeout
; 2 = Server gab einen anderen Fehler zurück
; 3 = Konnte nicht zum Server verbinden (meist falsche Adresse oder Port)
; 4 = Benutzername und/oder Passwort falsch
;===============================================================================
Func _pop3_connect($sServer, $iPort, $sUser, $sPass, $timeout = 10000)
$csocket = TCPConnect($sServer, $iPort)
If @error = 1 Then
$csocket = TCPConnect(TCPNameToIP($sServer), $iPort)
EndIf
If $csocket = -1 Then
SetError(3)
Return 0
EndIf
$iTimer = TimerInit ()
Do
If TimerDiff ($iTimer) > $timeout Then
SetError(1)
Return 0
EndIf
$recv = TCPRecv($csocket, 1024)
Until StringLeft($Recv, 3) = "+OK"
TCPSend($csocket, "USER " & $sUser & @CRLF)
$iTimer = TimerInit ()
Do
If TimerDiff ($iTimer) > $timeout Then
SetError(1)
Return 0
EndIf
$recv = TCPRecv($csocket, 1024)
Until StringLeft($Recv, 3) = "+OK"
TCPSend($csocket, "PASS " & $sPass & @CRLF)
$iTimer = TimerInit ()
Do
If TimerDiff ($iTimer) > $timeout Then
SetError(1)
Return 0
EndIf
$recv = TCPRecv($csocket, 1024)
If StringLeft($recv, 4) = "-ERR" Then
SetError(4)
Return 0
EndIf
Until StringLeft($Recv, 3) = "+OK"
Return $csocket
EndFunc
;===============================================================================
;
; Beschreibung: Gibt die Anzahl und die Größe der E-Mails auf dem Server zurück
; Parameter: $socket - Serversocket
; $timeout - Gibt an, wie lange auf eine Antwort gewartet werden soll (Standart: 10 Sek.).
; Rückgabewerte: Erfolg: Setzt @error auf 0 und gibt ein Array mit folgenden Daten zurück:
; $array[0] = Anzahl der E-Mails
; $array[1] = Größe aller E-Mails in Bytes
; Fehler: Setzt @error auf 1 bei einem unbekannten Fehler (2 bei Timeout und gibt 0 zurück)
; und gibt den vom Server gesendeten Fehler zurück.
;===============================================================================
Func _pop3_info($socket, $timeout = 10000)
TCPSend($socket, "STAT" & @CRLF)
$iTimer = TimerInit ()
Do
If TimerDiff ($iTimer) > $timeout Then
SetError(2)
Return 0
EndIf
$recv = TCPRecv($csocket, 1024)
If StringLeft($recv, 4) = "-ERR" Then
SetError(4)
Return $recv
EndIf
Until StringLeft($Recv, 3) = "+OK"
$sTrim = StringTrimLeft($recv, 4)
$split = StringSplit($sTrim, " ")
Dim $aStat[2]
$aStat[0] = $split[1]
$aStat[1] = $split[2]
Return $aStat
EndFunc
;===============================================================================
;
; Beschreibung: Empfängt eine E-Mail mit ihrem Header
; Parameter: $socket - Serversocket
; $timeout - Gibt an, wie lange auf eine Antwort gewartet werden soll (Standart: 10 Sek.).
; $iMail - Die Nummer der E-Meil zum Empfangen
; Rückgabewerte: Erfolg: Gibt die E-Mail zurück
; Fehler: Gibt 0 zurück und setzt @error bei einem Timeout auf 1 (bei anderen Fehlern 0)
;===============================================================================
Func _pop3_getmailraw($socket, $iMail, $timeout = 10000)
TCPSend($socket, "RETR " & $iMail & @CRLF)
$iTimer = TimerInit ()
Do
If TimerDiff ($iTimer) > $timeout Then
SetError(1)
Return 0
EndIf
$recv = TCPRecv($csocket, 1024)
If StringLeft($recv, 4) = "-ERR" Then
SetError(0)
Return 0
EndIf
Until StringLeft($recv, 3) = "+OK"
$split = StringSplit($recv, @CRLF)
For $i = 2 to $split[0] - 1
$sMsg &= $split[$i] & @CRLF
Next
Return $sMsg
EndFunc
;===============================================================================
;
; Beschreibung: Löscht eine E-Mail vom Server
; Parameter: $socket - Serversocket
; $timeout - Gibt an, wie lange auf eine Antwort gewartet werden soll (Standart: 10 Sek.).
; $iMail - Die Nummer der E-Meil zum Empfangen
; Rückgabewerte: Erfolg: Gibt 1 zurück
; Fehler: Gibt 0 zurück und setzt @error bei einem Timeout auf 1 (bei anderen Fehlern 0)
;===============================================================================
Func _pop3_deletemail($socket, $iMail, $timeout = 10000)
TCPSend($socket, "DELE " & $iMail & @CRLF)
$iTimer = TimerInit ()
Do
If TimerDiff ($iTimer) > $timeout Then
SetError(1)
Return 0
EndIf
$recv = TCPRecv($csocket, 1024)
If StringLeft($recv, 4) = "-ERR" Then
SetError(0)
Return 0
EndIf
Until StringLeft($recv, 3) = "+OK"
Return 1
EndFunc
;===============================================================================
;
; Beschreibung: Trennt die Verbindung zum Server
; Parameter: $socket - Serversocket
; Rückgabewerte: Keine
;===============================================================================
Func _pop3_disconnect($socket)
TCPSend($socket, "QUIT" & @CRLF)
TCPCloseSocket($socket)
EndFunc
also ich habe jetzt mal die @error Werte überprüft aber es kommt kein Fehler. Liegt das vielleicht am Format der Daten die an die MsgBox gegeben werden?
Naja die ini File hat er schon erstellt...
Das Problem ist, dass er nichts schreibt.
Mit deinem Beispiel:
[section2]
key=
bleibt einfach leer.
Hallöchen ich bin mal wieder bei autoit gelandet und will nun mal wieder nen bissel was schreiben...
Bin jetzt gerade allerdings auf ein Problem gestoßen. zum abrufen der Mail von meinem GMX Konto benutze ich die pop UFD
[autoit]TCPStartup()
$pop3sock = _pop3_connect($server, $port, $user, $password)
$pop3info = _pop3_info($pop3sock)
MsgBox(0, "Ergebnis", "Auf dem Server sind " & $pop3info[0] & " E-Mails mit einer Größe von " & $pop3info[1] & " Bytes.")
$mail = _pop3_getmailraw($pop3sock, 1, 1000)
MsgBox (1,"",$sMsg)
MsgBox(0, "E-Mail 1", $mail)
IniWrite ("Mail","Mail","Mail",$mail)
#_pop3_deletemail($pop3sock, 1)
_pop3_disconnect($socket)
Ich weiß das dies das Beispiel aus dem UDF Thread ist. Also er ruft mit meinen Login Daten die e-mails ab (es sind momentan nur 2) und gibt mir das auch aus mit Bytes usw. in der msgbox, die ja eigentlich den Inhalt darstelllen soll wird nichts angezeigt. Ich habe schon probiert $mail in eine Textdatei zu schreiben was auch nicht funktioniert hat.
Weiß jemand was ich falsch mache und kann mir jemand helfen das zu verbessern?
Danke!
Ich habe diese Frage jetzt selbst beantwortet.
Ist mit sicherheit sehr umständlich geworden aber es funktioniert nun.
Wenn das Prog gut ist dann eventuell mal damit ![]()
"Do not create 'redirect loops' with similar services (or AdF.ly) to generate revenue.
"
Ich habe es jetzt nicht studiert... Aber sie wollen nur nicht das man nen Prog macht um selber Profit zu generieren (siehe Zitat) ich will die werbung ja nur überspringen weil sie mich nervt.
Wenn das dann trotzdem gegen die Regeln ist dann sorry! Denke aber es geht in Ordnung.
Ne uch weiß das es ne art vergewaltigung ist.
Ich persönlich finde aber .inis sehr ordentlich ung einfach auszulesen deshalb.
Hallo ich habe da nich mal ne Frage. ![]()
Ich habe in einer GUI ein Fenster in dem ein Internwt Explorer angezeigt wird. Auf dieser angezeigten Seite soll nun ein Button geklickt werden. Den Befehl habe ich schon gefunden aber funktionieren tuts nicht.
Das Prog soll später Adfly Links automatisch öffnen und die Werbung übersprungen während ich weiter in "normalen Internet" surfe. Ja es sind nur 5 sek aber bei mir läd die seite immer ewig sodass daraus leicht mal 30 sek werden.
Es geht also genau um diesen Werbung Überspringen Button oben rechts.
Weiß jemand wie ich das machen muss?
Danke!
Local muss batürlich bleiben.
Es sollen alle Werte sortiert duch 1= 2= usw. in die Sektion Local sortiert werden.
Jeder Wert muss mit jedem in der .ini verglichen werden. Wenn er schon vorhanden ist, dann soll der wert aus dem input verworfen werden wenn er neu ist, dann bekommt er auch ne nummer z. B. 15= und wird mit in die .ini geschrieben.
Ok ich sehe ein das es etwas sehr seltsam erklärt ist. ![]()
Es gibt eine .ini Datei (Etwa so: [Local] 1=1234 2=2345 3=3456) die der Nutzer mit der Zeit selber füllt.
Es gibt in meiner GUI drei Inputs. Auslesen usw. klappt. Es soll sich aber nicht doppeln in der .ini aber die eingegeben Werte sollen hinzugefügt werden falls sie in der .ini nicht vorhanden sind.
Ich hoffe so ist es deutlicher und freue mich auf antworten.
doch. weil dann die werte die beim letztenmal alss das programm lief ja überschrieben werden das sollen sie aber nicht.
naja viel mehr infos gibt es kaum.
es soll sich halt in der ini der nutzers kein wert doppeln aber eben auch jeder jemals eingetragene wert erhalten bleibt.
#cs While 2
$Zahlend = IniRead ("eigeneLinks.ini","Links","Zahl","Not Found")
$Zahl = ""
$Link1 = GUICtrlRead ($Input1)
$Link2 = GUICtrlRead ($Input2)
$Link3 = GUICtrlRead ($Input3)
$ist1 = IniRead ("eigeneLinks.ini","Links" & $Zahl,"1","Not Found")
$ist2 = IniRead ("eigeneLinks.ini","Links" & $Zahl,"2","Not Found")
$ist3 = IniRead ("eigeneLinks.ini","Links" & $Zahl,"3","Not Found")
If $Link1 <> $ist1 And $ist2 And $ist3 Then
IniWrite ("eigeneLinks.ini","Links" & $Zahl,"1",$Link1)
EndIf
If $Link2 <> $ist1 And $ist2 And $ist3 Then
IniWrite ("eigeneLinks.ini","Links" & $Zahl,"2",$Link2)
EndIf
If $Link3 <> $ist1 And $ist2 And $ist3 Then
IniWrite ("eigeneLinks.ini","Links" & $Zahl,"3",$Link3)
EndIf
$Zahl = $Zahl + 1
WEnd
#ce
ich habe das mal so probiert geht glaube ich aber so nicht...
die ini ist so:
[Werte]
1=1234
2=2345
3=3456
Hallo
Ich habe ein Problem. Mein Programm (was nun mit der Hilfe meiner vorherigen Frage schon lauffähig ist) arbeitet mit einer Art Datenabnk welche es sich immer wieder durch eine heruntergeladene .ini Datei zieht (ich weiß das es somit keine richtige Datenbank ist, es reicht aber für das was ich machen will). Der Nutzer gib in eine GUI seine Daten ein, die lokal gespeichert werden sollen. am besten in einer .ini das bekomme ich soweit hin. es kann un aber sein, das seine Daten bereits in der Datenbank sind undvsomit verworfen werden müssen (ich meine die lokale datebank). mein problem ist also das die lokale .ini datei nach den eigelesenen werten aus der GUI durchsucht werden muss und nur falls der wert nicht vorhanden ist, soll er dazugeschrieben werden.
Hat das jetzt irgendwer verstanden?
Falls ja dann bin ich für ratschläge offen. ![]()
Ok. Danke habe es jetzt so gelöst das die ini einen Parameter enthält der die durchläufe einer schleife festlegt.
das hatte ich schon gelesen.
soll heißen es gibt kein @error?
ich habe es jetzt mit dem verstecken gemacht. Danke!
noch eine Frage: gibt es bei iniread auch einen @error oder soetwas?
Hallo
ich habe zwei fragen:
1. ich lade durch inetget eine .ini datei herunter. diese soll aber nur temporär zwischengespeichert werden. wenn sich das pro beendet soll auch diese datei gelöscht werden.
2. hängt mit 1. zusammen. diese temporäre datei soll vom nutzer nicht bearbeitbar sein. ich will die aber nicht umständlich in irgendwelchen system ordnern verstecken sondern das irgendwiev anders lösen.
jemand ideen?
Danke