Ciao,
ho realizzato del codice per leggere email usando il protocollo POP3. Da una classe che eredita da TCPclient creo un'istanza SSLstream (usando lo stream TCP come argomento del costruttore):
public void Connect(string server, string username, string password)
{
Connect(server, PopPortNumber);
SslStream netStream = new SslStream(GetStream());
netStream.AuthenticateAsClient(server);
string response = Response();
if (response.Substring(0, 3) != "+OK")
{
throw new Pop3Exception(response);
}
else
{
....
}
}
private string Response()
{
ASCIIEncoding enc = new ASCIIEncoding();
byte[] serverBuffer = new Byte[1024];
int count = 0;
while (true)
{
byte[] buff = new Byte[2];
int bytes = netStream.Read(buff, 0, 1);
if (bytes == 1)
{
serverBuffer[count] = buff[0];
count++;
if (buff[0] == '\n')
break;
}
else
{
break;
}
}
return enc.GetString(serverBuffer);
}
La connessione avviene correttamente e la variabile response riporta correttamente il valore di risposta dal server. Purtpoppo in coda alla stringa di risposta ci sono un'infinità di \0 (che dovrebbe essere il terminatore di stringa).
Proseguendo ottengo sul browser come output i vari messaggi di posta, ma nel mezzo ottengo anche dei rombi con un ? all'interno (penso in corrispondeza del caratttere \0).
Body: ����������....����
Date:Wed, 6 May 2009 14:01:16 +0200 ����������....����
e cosi via
Questo problema a cosa puo' essere dovuto? Ho forse tralasciato qualche impostazione nell'ASCIIencoder per trasformare byte[] in string e viceversa? Eventualmente sapreste suggerirmi qualche riga di codice che non crei questo problema come alternativa?
Grazie in anticipo!