StreamReader : recuperer mail.

Résolu
Kleidp Messages postés 124 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 10 février 2008 - 19 sept. 2006 à 12:09
Kleidp Messages postés 124 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 10 février 2008 - 21 sept. 2006 à 13:11
Bonjour,

je crée une application chargée de rapatrier certain mails.

Pour pouvoir récupérer les messages su serveur, j'ai un streamReader sur le flux du serveur:
    pop3Read = new StreamReader(pop3Flux);
Bon aucun problème et rien d'original pour le moment.

Je commence donc à lister tous mes mails pour récupérer le sujet (Subject : ) ainsi:

    Commande("RETR "+numMail); // Inscrit un mail dans le flux
    while ( txt != ".")
    {        if (txt.IndexOf("subject:", StringComparison.OrdinalIgnoreCase) !-1)  txtSujet txt.ToString(); //Récupère le sujet
        txt = pop3Read.ReadLine();
    }

Cette méthode est complètement inefficace puisqu'il faut lister tout le mail alors que le sujet se trouve au début (Bien que sur tout les exemples que j'ai parcourut font ainsi !). De plus elle provoque un bug lorsqu'il y a une pièce jointe de plus de 2Mo (devient horriblement long) d'ailleurs sur tout les exemples du site aucun ne passe :(

J'aimerais donc faire:

    while ( txt.IndexOf("subject:", StringComparison.OrdinalIgnoreCase) == -1)

    {
        txt = pop3Read.ReadLine();

    }
    txtSujet = xt.ToString();
    // Essayer d'atteindre la fin du streamReader pop3read

C'est donc ici que se trouve mon problème, il faut que j'atteigne la fin du streamReader(sans le parcourir) puis le charger avec le mail suivant sinon je continu a lister la fin du mail précédent, mais je n'y arrive pas ! (je ne sais pas si c'est très clair comme explication:)
J'ai essayé par exemple avec pop3Read.ReadtoEnd() mais rien n'y fait.

Merci pour vos futur (et intéressantes) réponses.

1 réponse

Kleidp Messages postés 124 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 10 février 2008
21 sept. 2006 à 13:11
J'ai trouvé un moyen différent : Envoyer au serveur le message "TOP n i"
n: numéro du mail
i: nombre de lignes après l'entête.

Récupère ainsi juste l'entête du mail.
3
Rejoignez-nous