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 :

application me permettant de charger mes mail en pop3


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Par défaut application me permettant de charger mes mail en pop3
    bonjour

    je débutent en c# et je voudrait faire une application me permettant de charger mes mail en pop3

    donc j'ai trouver un tutoriel sur http://lgmorand.developpez.com/dotnet/mail/#L2

    et quand j'utilise ce code :
    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
    private void cmd_valider_Click(object sender, EventArgs e)
            {
                TcpClient monSocket;
                monSocket = new TcpClient(cb_popserveur.Text, 995); // 110 est le port par défaut pour les serveurs POP3
     
                NetworkStream monStream;
     
     
                // initialisation du Stream
                monStream = monSocket.GetStream();
     
                // création du streamreader
                StreamReader monStreamReader;
                monStreamReader = new StreamReader(monStream);
     
     
                // Préparation de la commande USER avec le nom d'utilisateur
                String Commande = "user " + txt_login.Text + "\r\n";
     
                // Envoi de la commande au serveur
                Byte[] bCommande = System.Text.ASCIIEncoding.ASCII.GetBytes(Commande);
                monStream.Write(bCommande, 0, bCommande.Length);
     
     
                // Préparation de la commande PASS avec le mot de passe utilisateur
                String Commande = "pass " + txt_pwd.text + "\r\n";
     
                // Envoi de la commande au serveur
                Byte[] bCommande = System.Text.ASCIIEncoding.ASCII.GetBytes(Commande);
                monStream.Write(bCommande, 0, bCommande.Length);
     
     
            }
    ca me met les erreur suivante

    Erreur 3 'System.Windows.Forms.TextBox' ne contient pas de définition pour 'text' C:\Documents and Settings\stageinfo\Mes documents\Visual Studio 2005\Projects\POP3\POP3\Form1.cs 63 49 POP3
    Erreur 2 Une variable locale nommée 'Commande' est déjà définie dans cette portée C:\Documents and Settings\stageinfo\Mes documents\Visual Studio 2005\Projects\POP3\POP3\Form1.cs 63 20 POP3
    Erreur 4 Une variable locale nommée 'bCommande' est déjà définie dans cette portée C:\Documents and Settings\stageinfo\Mes documents\Visual Studio 2005\Projects\POP3\POP3\Form1.cs 66 20 POP3
    cordialement

  2. #2
    Max
    Max est déconnecté
    Expert confirmé

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Par défaut
    Salut.

    Première erreur, de la casse (il faut un 'T' majuscule) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String Commande = "pass " + txt_pwd.Text + "\r\n";
    Deuxième erreur, tu définis des variables deux fois (Commande et bCommande). Tu peux changer leur nom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // Préparation de la commande USER avec le nom d'utilisateur
    String commandeUser = "user " + txt_login.Text + "\r\n";
     
    // Envoi de la commande au serveur
    Byte[] bCommandeUser = System.Text.ASCIIEncoding.ASCII.GetBytes(commandeUser);
    monStream.Write(bCommandeUser, 0, bCommandeUser.Length);
     
     
    // Préparation de la commande PASS avec le mot de passe utilisateur
    String commandePass = "pass " + txt_pwd.Text + "\r\n";
     
    // Envoi de la commande au serveur
    Byte[] bCommandePass = System.Text.ASCIIEncoding.ASCII.GetBytes(commandePass);
    monStream.Write(bCommandePass, 0, bCommandePass.Length);
    Rien de bien sorcier .

  3. #3
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Bonjour,

    Utilises un espace de nom plus élaboré comme System.Net.
    Pourquoi utiliser encore les sockets !

    Cordialement;

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  4. #4
    Membre très actif
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Par défaut
    Utilises un espace de nom plus élaboré comme System.Net.
    Pourquoi utiliser encore les sockets !
    le framework.net ne dispose pas d'objet gérant les connections POP3 il me semble

    Rien de bien sorcier .
    j'ai installer et utiliser visual c# pour la première fois il y a 4h , avant je faisait du vb.net , il était beaucoup moins sensible a la casse ^^

    bref

    donc j'ai continuer mon petit truc qui est ci-dessous

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
            private void Form1_Load(object sender, EventArgs e) {
                cb_popserveur.Items.Add("pop.gmail.com");
                cb_popserveur.Items.Add("pop3.live.com");
                cb_popserveur.Items.Add(""); 
            }
     
            private void cmd_valider_Click(object sender, EventArgs e)
            {
                try {
                    String Commande = "user " + txt_login.Text + "\r\n";
                    Tcp = new TcpClient(cb_popserveur.Text, 995);
                    lvMails.Items.Clear();
                    lblStatus.Text = "Try to Connect ...";
     
                    Tcp = new TcpClient(cb_popserveur.Text, 995);
                    ns = Tcp.GetStream();
                    sr = new StreamReader(ns);
                   // WriteConsole();
                    lblStatus.Text = "Connecté...";
                    EnvoiCommande(Commande);
                  //  WriteConsole();
                    Commande = "pass " + txt_pwd.Text + "\r\n";
                    EnvoiCommande(Commande);
                  //  WriteConsole();
                    inbMsg = NombreDeMessages(1);
                    lblStatus.Text = "Message non lus (" + inbMsg.ToString() + ")";
                    RecupereListeMessages();
                }
                catch (Exception ex){
                    //System.Windows.POP3apps.MessageBox.Show(ex);
                    MessageBox.Show(ex.Message); }
            }
            private int NombreDeMessages(int mode, params int[] index) {
                String sOutStream = "";
                if (mode == 1)
                    sOutStream = "stat\r\n";
                else if (mode == 2)
                    sOutStream = "list " + index[0].ToString() + "\r\n";
                String[] tempS ={ "0" };
                try{
                    EnvoiCommande(sOutStream);
                    String tempLog = sr.ReadLine();
                    tempS = tempLog.Split(' '); }
                catch (Exception e){
                    MessageBox.Show("erreur" + e);}
                return int.Parse(tempS[1]); }
     
              private void RecupereListeMessages()
              {
                  for (int i = 1; i <= inbMsg; i++)
                  {
                      lblStatus.Text = "Retrieve Message " + i.ToString() + " ...";
                      int intSizeMsg = NombreDeMessages(2, i);
                      EnvoiCommande("retr " + i.ToString() + "\r\n");
                      parseMail(intSizeMsg);
                  }
              }
     
     
              private void parseMail(int size)
              {
                  string szTemp = sr.ReadLine();
                  string szSubject = "";
                  string szDate = "";
                  int temp;
     
                  if (szTemp != "-")
                  {
                      szTemp = sr.ReadLine();
                      string szSender;
                      if ((temp = szTemp.IndexOf("<")) != -1)
                          szSender = szTemp.Substring(temp);
                      else
                          szSender = "Inconnu||Erreur";
     
                      System.Windows.Forms.ListViewItem curItem = lvMails.Items.Add("");
                      szTemp = sr.ReadLine();
                      while (szTemp != ".")
                      {
                          if (szTemp.IndexOf("Date:") != -1)
                              szDate = szTemp.Substring(5, szTemp.Length - 5);
                          if (szTemp.IndexOf("Subject:") != -1)
                              szSubject = szTemp.Substring(8, szTemp.Length - 8);
                          szTemp = sr.ReadLine();
                      }
                      curItem.SubItems.Add(szSender.Replace("<", "").Replace(">", ""));
                      curItem.SubItems.Add(szSubject);
                      curItem.SubItems.Add(Convert.ToDateTime(szDate).ToShortDateString());
                      curItem.SubItems.Add(Convert.ToDateTime(szDate).ToShortTimeString());
                  }
              }
     
              private void RecupereMail(int NumMail)
              {
                  EnvoiCommande("retr " + NumMail.ToString() + "\r\n");
                  string szTemp = sr.ReadLine();
                  while (szTemp != ".")// fin du mail
                  {
                      if (szTemp.Length != 0)// on ne travail par sur les lignes vides (sauts de ligne)
                      {
                          // on ajoute la ligne dans la textbox d'affichage du mail.
                          // Si le dernier caractère est le symbole "=" alors cela représente un saut de ligne que l'on doit rajouter.
                          if (szTemp[szTemp.Length - 1].Equals('='))
                              txtDetails.AppendText(szTemp.Substring(0, szTemp.Length - 1));
                          else txtDetails.AppendText(szTemp + "\r\n");
                      }
                      szTemp = sr.ReadLine(); // lit la ligne suivante
                  }
              }
              private void EnvoiCommande(String bToSend)
              {
                  Byte[] bOutStream = System.Text.ASCIIEncoding.ASCII.GetBytes(bToSend);
                  ns.Write(bOutStream, 0, bOutStream.Length);
              }
    sur ma form j'ai une textbox pour le login , une pour le mot de passe et une combobox pour le serveur pop , ca avait l'air de plutôt bien marché jusqu'à ce que je lance la commande pop pour récupérer les mail

    ca me met l'erreur suivante qui est en piéce jointe

    je ne suis pas sur mais je pense que ca a un rapport avec le certificat ssl

    mais je ne sais pas comment le valider en c#
    Images attachées Images attachées  

Discussions similaires

  1. OUTLOOK 2003 : Mes mails yahoo arrivent identifiés comme "
    Par Richard_ducati dans le forum Outlook
    Réponses: 1
    Dernier message: 17/09/2007, 12h12
  2. [Mail] Mes mails ne passent pas en HTML
    Par WEBANNONCE dans le forum Langage
    Réponses: 2
    Dernier message: 08/09/2006, 16h41
  3. [VB]recuperer le contenu de mes mails
    Par mick84m dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 17/03/2006, 11h07
  4. [Mail] mes mails n'arrivent pas
    Par skybuck dans le forum Langage
    Réponses: 9
    Dernier message: 08/10/2005, 21h09
  5. Réponses: 9
    Dernier message: 24/05/2003, 10h25

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