Announcement

Collapse
No announcement yet.

POP3-Abruf nur wie?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • POP3-Abruf nur wie?

    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:
    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:
    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

  • #2
    Hallo,

    vielleicht hilft dies http://entwickler-forum.de/showthrea...356#post180356

    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Vielen dank das hilft schon Danke sehr

      Comment

      Working...
      X