Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C#] - Ancora POP3 :(
Forum - C# / VB.NET - [C#] - Ancora POP3 :(

Avatar
dacanalr (Normal User)
Rookie


Messaggi: 26
Iscritto: 23/07/2009

Segnala al moderatore
Postato alle 12:47
Giovedì, 30/07/2009
Appena risolto un problema ecco che ne salta fuori un'altro!!!
Ho continuato il programma facendo una richiesta LIST al server e non riesco a leggerla perché qualcosa in invia() si blocca!

Ecco il codice se qualcuno ha qualche suggerimento!

Codice sorgente - presumibilmente C#

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Net;
  6. using System.Net.Sockets;
  7. using Microsoft.VisualBasic;
  8. using System.IO;
  9.  
  10. namespace ControllaMail
  11. {
  12.     class Program
  13.     {
  14.        
  15.  
  16.         static void Main(string[] args)
  17.         {
  18.             System.Console.Title = "ControllaMail - RDC";
  19.             string risposta;
  20.             TcpClient server = new TcpClient("in.alice.it", 110);
  21.            
  22.             if (server.Connected)
  23.             { Console.WriteLine("Connessione avvenuta"); }
  24.             else
  25.             {
  26.                 Console.WriteLine("Connessione fallita");
  27.                 Console.Read();
  28.                 server.Close();
  29.                 return;
  30.             }
  31.            
  32.             NetworkStream serverStream = server.GetStream();
  33.             rispostaServer(serverStream);
  34.             Console.Write("\n\n");
  35.  
  36.             risposta = invia(serverStream, "user yyyyyyy");
  37.             if (risposta != null) { Console.WriteLine("User " + risposta); }
  38.             else
  39.             {
  40.                 Console.Write("\nUser non scritto");
  41.                 serverStream.Close();
  42.                 server.Close();
  43.                 return;
  44.             }
  45.  
  46.             risposta = invia(serverStream, "pass xxxxxx");
  47.             if (risposta != null) { Console.WriteLine("Password " + risposta); }
  48.             else
  49.             {
  50.                 Console.WriteLine("\nPassword non scritta");
  51.                 serverStream.Close();
  52.                 server.Close();
  53.                 return;
  54.             }
  55.  
  56.             risposta = invia(serverStream,"list");
  57.             if (risposta != null)
  58.             {
  59.                 Console.WriteLine(risposta);
  60.                 int numeroMessggi = Int32.Parse(risposta.Split(' ')[1]);
  61.                 Console.WriteLine(numeroMessggi);
  62.                 risposta = riceviMail(serverStream, numeroMessggi);
  63.                 if (risposta != null)
  64.                 {
  65.                     Console.WriteLine("\n\nUltimo Messaggio\n\n");
  66.                     Console.Write(risposta);
  67.                 }
  68.             }
  69.             Console.WriteLine(invia(serverStream,"quit"));
  70.             Console.WriteLine("Debug2");
  71.             Console.WriteLine(Console.ReadLine());
  72.             serverStream.Close();
  73.             server.Close();
  74.            
  75.         }
  76.  
  77.         public static string invia(NetworkStream ns, string s)
  78.         {
  79.             byte[] command = System.Text.Encoding.Default.GetBytes(s + "\r\n");
  80.             StreamReader strReader = new StreamReader(ns);
  81.            
  82.             if (s != "list")
  83.             {
  84.                 if (ns.CanWrite)
  85.                 {
  86.                     ns.Write(command, 0, command.Length);
  87.                     if (ns.CanRead)
  88.                     {
  89.                         return strReader.ReadLine();
  90.                     }
  91.                 }else return null;
  92.             }
  93.             else
  94.             {
  95.                 Console.WriteLine("Invia->list ! ");
  96.                 string ricevuta1 = null;
  97.                 string ricevuta2 = null;
  98.                 while (ns.CanRead)                   //Questo ciclo è maledetto!!!
  99.                 {
  100.                     ricevuta2 = ricevuta1;
  101.                     ricevuta1 = strReader.ReadLine();
  102.                     Console.WriteLine(ricevuta1);
  103.                     if (ricevuta1 == ".")
  104.                         break;
  105.                 }
  106.                 return ricevuta2;
  107.             }
  108.             return null;            
  109.         }
  110.  
  111.  
  112.         public static void rispostaServer(NetworkStream ns)
  113.         {
  114.             if (ns.CanRead)
  115.             {
  116.                 StreamReader strReader = new StreamReader(ns);
  117.                 Console.WriteLine(strReader.ReadLine());
  118.             }
  119.         }
  120.  
  121.         public static string riceviMail(NetworkStream ns, int n)
  122.         {
  123.             byte[] command = System.Text.Encoding.Default.GetBytes("retr " + n + "\r\n");
  124.             StringBuilder sb = new StringBuilder();
  125.             if (ns.CanWrite)
  126.             {  
  127.                 StreamReader strReader = new StreamReader(ns);
  128.                 ns.Write(command, 0, command.Length);
  129.                 Console.WriteLine("riceviMail1");
  130.                 String ricevuta;
  131.                 while(ns.CanRead)
  132.                 {
  133.                     ricevuta = strReader.ReadLine();
  134.                     if (ricevuta != ".")
  135.                         sb.AppendLine(ricevuta);
  136.                     else { break; }
  137.                     Console.WriteLine("RigaLetta : "+ricevuta);
  138.                 }
  139.                 return sb.ToString();
  140.             }
  141.             else return null;
  142.         }
  143.  
  144.     }
  145. }



Ciao Ciao

Ultima modifica effettuata da dacanalr il 30/07/2009 alle 12:48


Io sono Bender! Prego, inserire floppino!
PM Quote