none
Lecture de mails POP3 avec Visual Basic .NET 2005 RRS feed

  • Question

  • Bonjour à tous,

    Je suis actuellement en train de développer une application qui doit lire les mails reçus, télécharger les fichier joints et supprimer ces emails, grâce à une connexion POP SSL.
    Le problème, c'est que j'ai beau parcourir le web, je ne trouve pas le code que je cherche. J'ai reussi à me fabriquer un début de code grâce à une source, pour la connexion, en y insérant une connexion SSL (ne faites pas attention au nommage des variables ou autre, j'ai repris une partie du code et ce n'est que pour le test):

    Code Snippet


    Public Function Connection   

           NbMails = 0
            Dim retServer As String
            Try
                ' Initialisation
                co = New TcpClient(Server, ServerPort)

                'ssl
                pop3Stream = New SslStream(co.GetStream(), False)
                pop3Stream.ReadTimeout = 30
                pop3Stream.AuthenticateAsClient(Server)

                ns = co.GetStream()
                sr = New StreamReader(pop3Stream)
                'sr.ReadLine()
                MsgBox(sr.ReadLine)
                Dim sOut As String = "USER " & User & vbCrLf

                ' Envoi du login
                SendStream(sOut)
                retServer = sr.ReadLine

               MsgBox(sr.Readline)

                RaiseEvent ConnectionStatus(retServer)

                ' Envoi du mot de passe
                sOut = "PASS " & PWord & vbCrLf
                SendStream(sOut)
                retServer = sr.ReadLine
                RaiseEvent ConnectionStatus(retServer)

                If retServer.Substring(0, 4) <> "-ERR" Then
                    NbMails = RecupMsgInfo(1)
                    RaiseEvent ConnectionStatus("Nombre de mails: " & NbMails.ToString())
                    Return True
                Else
                    RaiseEvent ConnectionStatus("Identification refusée !")
                    Return False
                End If
            Catch ex As Exception
                RaiseEvent ConnectionStatus(ex.ToString())
                Return False
            End Try

    End Function



    ' Envoi des commandes
     Private Sub SendStream(ByVal s As String)
            Dim FluxSortant() As Byte
            FluxSortant = EncodeByte(s)
            Try
                ns.Write(FluxSortant, 0, FluxSortant.Length)
            Catch ex As Exception
                RaiseEvent ConnectionStatus(ex.Message)
            End Try
     End Sub

        ' Encodage des commandes pour POP3
    Private Function EncodeByte(ByVal s As String) As Byte()
            Return System.Text.ASCIIEncoding.ASCII.GetBytes(s.ToCharArray())
    End Function


    Premier problème:
     - Le premier MsgBox me ramène bien le message d'accueil du serveur "+OK wee01s Cyrus POP3 Murder v2.3.7 server ready", en revanche, le second me manène "nothing" et me génère une erreur, au lieu de me retourner "+OK password". Le problème vient peut-être de mon implémentation pour le SSL, je ne sais pas
    - 2ème soucis, je ne trouve pas de code pour télécharger les pièces jointes. et je suis vraiment coincé, car c'est le but premier de mon application.

    Je m'en remets donc à vous car je suis vraiment coincé, impossible de passer le login, et impossible de trouver le code pour télécharger les fichiers joints;

    Je vous en remercie infiniment

    Cyril
    jeudi 19 juillet 2007 12:38

Réponses

  • J'ai déjà trouvé ma réponse pour le premier point, il fallait mettre:
                Pop3StreamReader = New StreamReader(pop3Stream, System.Text.Encoding.ASCII)

    par contre, je trouve toujours pas de code en .NET pour le deuxième point
    jeudi 19 juillet 2007 15:08
  • Bonjour,

     

    Concernant le second problème il te suffit d'envoyer la commande RETR +le numéro du mail que tu veut récupèrer, le serveur POP te renvera tout le contenu du mail, tu devra alors te dbrouillé pour le découper et récupérer uniquement ceux dont tu a besoin.....la partie la plus difficile est le découpage du mail car la structure de ce dernier vari selon le client mail utilisé!!!

     

    mardi 4 septembre 2007 12:18

Toutes les réponses

  • J'ai déjà trouvé ma réponse pour le premier point, il fallait mettre:
                Pop3StreamReader = New StreamReader(pop3Stream, System.Text.Encoding.ASCII)

    par contre, je trouve toujours pas de code en .NET pour le deuxième point
    jeudi 19 juillet 2007 15:08
  • Bonjour,

     

    Concernant le second problème il te suffit d'envoyer la commande RETR +le numéro du mail que tu veut récupèrer, le serveur POP te renvera tout le contenu du mail, tu devra alors te dbrouillé pour le découper et récupérer uniquement ceux dont tu a besoin.....la partie la plus difficile est le découpage du mail car la structure de ce dernier vari selon le client mail utilisé!!!

     

    mardi 4 septembre 2007 12:18