IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Lire des mails via un netStream extremement lent.


Sujet :

C#

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 12
    Points : 7
    Points
    7
    Par défaut 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 : 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.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 116
    Points : 149
    Points
    149
    Par défaut
    Telecharge le mail sans les pièces jointes, et tu telecharge les pieces jointes apres.
    Ca doit pouvoir se faire je pense sans trop de soucis

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Le problême c'est que lorsque tu demandes au server mail de récupérer ton mail il te donne le tout. les infos du mail, le corps, les pièces jointes.
    Et les commandes qu'accepte le server sont très limitées, donc en gros on récupère tout le mail ou rien.
    En fait j'aurais voulu savoir si toutes les connections dans mon codeC# etaient bien faites ou si il y avait une autre façon de faire plus rapide et moins lourd.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 116
    Points : 149
    Points
    149
    Par défaut
    Tu as des librairies mails sinon, Regarde vers System.Web ou System.Net

    tu as des librairies qui devraient faire ce que tu veux

Discussions similaires

  1. Envoyer des mails via différents noms de domaines
    Par dolu02 dans le forum E-Mailing
    Réponses: 5
    Dernier message: 31/05/2011, 12h20
  2. Lire des mails dans Outlook Express
    Par G_angel dans le forum C#
    Réponses: 1
    Dernier message: 02/03/2010, 11h23
  3. Recevoir / lire des mails
    Par capit030 dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 16/12/2009, 13h41
  4. Réponses: 3
    Dernier message: 07/12/2009, 11h31
  5. Imposible d'envoyer des mail via un autre serveur
    Par HwRZxLc4 dans le forum Administration système
    Réponses: 0
    Dernier message: 27/04/2008, 15h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo