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:
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:
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
Code:
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()); } } }
Code:
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()); } }
Liebe Grüße
Comment