ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
332
332
EMPFEHLEN
-
29.10.08 17:44 #1
- Registriert seit
- Feb 2007
- Beiträge
- 28
Hallo Leute, ich programmiere zur Zeit an einem E-Mail-Client. Momentan läuft auch alles soweit gut und ich kann auch über authentifizierten SMTP-Servern Mails verschicken, sogar mit Datei-Anhang etc. Nun gehts um den POP-Abruf von E-Mails. Ich kann mich zwar schon mit dem POP-Server verbinden, das sieht wie folgt aus:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
public void POPConnect() { if (File.Exists("data.dat") == false) { MessageBox.Show("Bitte legen Sie ein Konto an oder korregieren Sie Ihre Eingaben!"); Konto creKonto = new Konto(); creKonto.Show(); } else { // Login-Data string[] lines = System.IO.File.ReadAllLines("data.dat"); string POPServ = lines[2]; string User = lines[4]; string Passw = lines[5]; // change cursor into wait cursor Cursor cr = Cursor.Current; Cursor.Current = Cursors.WaitCursor; // create server POP3 with port 110 Server = new TcpClient(POPServ,110); Status.Items.Clear(); try { string welcome = "------------ Welcome to PrimeMail ------------"; string stat = "--------------------LOAD Status--------------------"; string end = "----------------- Status FINISHED -----------------"; Status.Items.Add(welcome.ToString()); Status.Items.Add(stat.ToString()); // initialization NetStrm = Server.GetStream(); RdStrm= new StreamReader(Server.GetStream()); Status.Items.Add(RdStrm.ReadLine()); // Login Process Data = "USER "+ User+CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); Status.Items.Add(RdStrm.ReadLine()); Data = "PASS "+ Passw+CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); Status.Items.Add(RdStrm.ReadLine()); // Send STAT command to get information ie: number of mail and size Data = "STAT"+CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); Status.Items.Add(RdStrm.ReadLine()); Status.Items.Add(end.ToString()); // back to normal cursor Cursor.Current = cr; } catch(InvalidOperationException err) { Status.Items.Add("Error: "+err.ToString()); } } }
Soweit so gut, Ich habe auch schon was um zu empfangen. Ich muss im quasi einen Wert geben welche E-mail er abrufen soll. Diese zeigt er dann im richtextBox1 an. Diese lautet wie folgt:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
public void POPReceive() { // change cursor into wait cursor Cursor cr = Cursor.Current; Cursor.Current = Cursors.WaitCursor; string szTemp; richTextBox1.Clear(); try { // retrieve mail with number mail parameter Data = "RETR "+ textBox1.Text+CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); szTemp = RdStrm.ReadLine(); if(szTemp[0]!='-') { while(szTemp!=".") { richTextBox1.Text += szTemp+CRLF; szTemp = RdStrm.ReadLine(); } } else { Status.Items.Add(szTemp); } // back to normal cursor Cursor.Current = cr; } catch(InvalidOperationException err) { Status.Items.Add("Error: "+err.ToString()); } }
Nun wollte ich es gern so haben der der alle Mails abholt, ohne einen bestimmten Wert anzugeben. Hatte vielleicht überlegt erst alle in einem String-Array zu laden und dann weiterzuverarbeiten. Aber ich weiß net genau wie
Wollte halt letztendlich die Mails in einer ListBox angezeigt bekommen und dann per klick die Nachricht lesen. Nur weiß ich da nicht wie ich es nu weiter verwirkliche
Hat jemand mit dem POP-Abruf erfahrung gemacht?
Liebe Grüße
Punisher86
-
Hallo punisher86,
mit welchem Framework arbeitest du denn ?
Selbst unter Net 1.1 gab es glaube ich schon Klassen dafür
im System.Net Namespace und ab Net 2 gibt es auf jeden Fall
einen fertigen SMTP Mailclient in System.Net.Mail.
Warum also das Rad mit TcpClient neu erfinden ?
Gruß
Jens
-
02.11.08 18:42 #3
- Registriert seit
- Feb 2007
- Beiträge
- 28
Hi Jens,
Ich arbeite mit dem .NET 2....
In System.Net.Mail beinhaltet smtp, das stimmt
Soweit habe ich das mit smtp gelöst
Ich arbeite jetzt daran POP hinzubekommen
Nur dafür gibt es glaub ich keine fertige klasse im .net oder? wüsste ich jedenfalls nicht
Gruß
-
Hi ?,
ja du jast Recht, da waren meine Finger wieder schneller als der
Kopf.
Ich habe aber eine Assembly die nicht von mir stammt sondern die ich mal
auf Codeproject.com gefunden habe.
Da sind ein SMTP und POP Client enthalten. Beides funktioniert tadellos und
ist bei mir schon lange im Einsatz.
Ich hänge das Projekt mal als Zip Datei an und bin sicher das hilft dir weiter.
Das meiste ist einfach und selbsterklärend.
Gruß
Jens
-
02.11.08 20:30 #5
- Registriert seit
- Feb 2007
- Beiträge
- 28
Ich danke dir
Das hilft mir sehr weiter, danke! Dann werde ich mir das mal zu gemüte tun.
Liebe Grüße
Ähnliche Themen
-
paint(G...) auf Abruf
Von MRS im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 10Letzter Beitrag: 21.11.06, 21:45 -
Download Abruf?
Von Nizomi im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 27.01.06, 15:35 -
Regelmäßiger Abruf von Seiten
Von HUBBLE im Forum PHPAntworten: 1Letzter Beitrag: 05.11.04, 15:21 -
[outlookExpress] hotmail abruf Fehler
Von vinc5nt im Forum Office-AnwendungenAntworten: 13Letzter Beitrag: 19.01.04, 23:01 -
T-Online email Abruf
Von vinc5nt im Forum HardwareAntworten: 8Letzter Beitrag: 02.05.02, 16:12





Zitieren
Login





