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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.