Lire des mails via un netStream extremement lent.
Bonjour à tous.
Je suis en train de développer une application qui lit mes mails sur un server.
Le probleme c'est que lorsqu'il y a une pièce jointe dans un de mes mails tout de suite le contenu du mail passe de 2000 lignes à très facilement 20 000 lignes.
Et dans ce cas mon application met presque 5 minutes a lire l'intégralité du mail via un le net.
Mes attentes sont:
1) Récupérer l'intégralité du mail, sans que ça mette trop de temps à lire. (comme outlook par exemple)
Voici en gros le code que j'utilise:
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
|
//ON SE CONNECTE
//Create server POP3 with port 110
TcpClient tcpClient = new TcpClient();
tcpClient.Connect(server, port);
//Create a network stream to retrieve data from the TCP client
NetworkStream netStream = tcpClient.GetStream();
//We need a stream reader to be able to read the network stream
StreamReader strReader = new StreamReader(netStream);
if (tcpClient.Connected)
{
//ON DONNE LE LOGIN
log += strReader.ReadLine();
log += "<br/>";
//Buffer to which we're going to write the commands
byte[] writeBuffer = new byte[1024];
//We'll be passing ASCII characters
ASCIIEncoding enc = new System.Text.ASCIIEncoding();
//Pass the username to the server
writeBuffer = enc.GetBytes("USER " + login + "\r\n");
netStream.Write(writeBuffer, 0, writeBuffer.Length);
//ON DONNE LE PASS
//Give the password to the server
writeBuffer = enc.GetBytes("PASS " + pass + "\r\n");
netStream.Write(writeBuffer, 0, writeBuffer.Length);
//ON DEMANDE DE LIRE LE PREMIER MAIL
writeBuffer = enc.GetBytes("RETR 1 \r\n");
netStream.Write(writeBuffer, 0, writeBuffer.Length);
//ON LIT LE MAIL
while (true)
{
string line = strReader.ReadLine();
if(line == ".") break;/*les mails se finissent tous par "."*/
else continue;
}
writeBuffer = enc.GetBytes("QUIT\r\n");
netStream.Write(writeBuffer, 0, writeBuffer.Length);
strReader.Close();
netStream.Close();
} |
Rien que faire ça sur un mail qui contient 3 pieces jointes et dont la totalité du mail fait 2 mo ça prend bien 4 vrais minutes et je sais que c'est faisable de le lire en 1 secondes max puisque outlook le fait bien.
TOUTES propositions sont les bienvenues.