NSUADI
Messages postés540Date d'inscriptionmardi 4 août 2009StatutMembreDernière intervention 1 février 2013
-
15 août 2010 à 03:45
NSUADI
Messages postés540Date d'inscriptionmardi 4 août 2009StatutMembreDernière intervention 1 février 2013
-
15 août 2010 à 18:26
Bonsoir!!
j'utilise la classe client_pop3 définie comme suit:
Imports System
Imports System.IO
Imports System.Net
Imports System.Data
Imports System.Net.Mail
Imports System.Collections
Imports System.Net.Sockets
Public Class clientpop3
' class de connexion POP3
' Téléchargement des messages
#Region "Declarations privées"
Private co As TcpClient
Private ns As NetworkStream
Private sr As StreamReader
Private Server As String
Private ServerPort As Integer = 110
Private User As String
Private PWord As String
Private NbMails As Integer = 0
Private NetStrm As NetworkStream
Private RdStrm As StreamReader
#End Region
#Region "Properties Publiques"
' Nom de l'utilisateur
Public Property UserName() As String
Get
Return User
End Get
Set(ByVal value As String)
User = value
End Set
End Property
' Mot de passe
Public Property PassWord() As String
Get
Return PWord
End Get
Set(ByVal value As String)
PWord = value
End Set
End Property
' Nom du serveur
Public Property ServerName() As String
Get
Return Server
End Get
Set(ByVal value As String)
Server = value
End Set
End Property
' Numéro du port de connexion
Public Property ServerPortNumber() As Integer
Get
Return ServerPort
End Get
Set(ByVal value As Integer)
ServerPort = value
End Set
End Property
' Obtient le nombre de mails
Public ReadOnly Property NumberOfMails() As Integer
Get
Return NbMails
End Get
End Property
#End Region
' Evenement renvoyant les informations de connexion etc...
Public Event ConnectionStatus(ByVal message As String)
' Reception des messages et sauvegarde
' ou non dans un fichier
Public Function receiveMessage(ByVal messageIndex As Integer, ByRef messageStream As String, Optional ByVal saveFileName As String = "") As Boolean
Dim szTemp As String
Dim sOut As String
Dim message As String = ""
Try
sOut = "RETR " & messageIndex.ToString() & vbCrLf
SendStream(sOut)
szTemp = sr.ReadLine
RaiseEvent ConnectionStatus(szTemp)
Dim tempString As String = ""
If szTemp(0) <> "-" Then
While szTemp <> "."
tempString = System.Text.Encoding.ASCII.GetString(System.Text.Encoding.Convert(System.Text.Encoding.ASCII, System.Text.Encoding.UTF8, EncodeByte(szTemp)))
message = message & tempString & vbCrLf
szTemp = sr.ReadLine()
End While
End If
messageStream = message
' Sauvegarde du mail
If saveFileName <> "" Then
Dim myFile As New System.IO.FileInfo(saveFileName)
Dim myTextWriter As System.IO.TextWriter
myTextWriter = myFile.CreateText()
myTextWriter.Write(messageStream)
myFile = Nothing
myTextWriter.Close()
myTextWriter.Dispose()
Return True
End If
Return True
Catch ex As Exception
RaiseEvent ConnectionStatus(ex.Message.ToString())
Return False
End Try
End Function
' Supprime le message passé en paramètre
Public Function DeleteMessage(ByVal messageIndex As Integer) As Boolean
Dim data As String = "DELE " & messageIndex.ToString & vbCrLf
SendStream(data)
Dim tmpString As String = sr.ReadLine()
If tmpString.Substring(0, 4) = "-ERR" Then
MsgBox("Could Not Delete Message")
RaiseEvent ConnectionStatus("Le message " & messageIndex & " n'a pas été supprimé !")
Return False
Else
RaiseEvent ConnectionStatus("Le message " & messageIndex & " a été supprimé !")
Return True
End If
End Function
' Connection à la boite
Public Function connect() As Boolean
NbMails = 0
Dim retServer As String
Try
' Initialisation
co = New TcpClient(Server, ServerPort)
ns = co.GetStream()
sr = New StreamReader(co.GetStream())
'sr.ReadLine()
Dim sOut As String = "USER " & User & vbCrLf
' Envoi du login
SendStream(sOut)
retServer = 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
' Déconnexion
Public Function Disconnect() As Boolean
Dim sOut As String
Dim retString As String
sOut = "QUIT" & vbCrLf
SendStream(sOut)
Try
retString = sr.ReadLine()
RaiseEvent ConnectionStatus(retString)
Catch ex As Exception
RaiseEvent ConnectionStatus(ex.Message)
End Try
sr.Close()
ns.Close()
co.Close()
Return True
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
' Recupération du nombre de message
' ou du corps des messages
Private Function RecupMsgInfo(ByVal iMode As Integer, ByVal ParamArray i() As Integer) As Integer
Dim FluxSortant As String = ""
Dim sTempLigne As String = "+OK "
Select Case iMode
Case 1
FluxSortant = "STAT" + vbCrLf
Case 2
FluxSortant = "LIST " + i(0).ToString() + "\r\n"
End Select
Dim sTemp As String() = {"0"}
Try
Do
SendStream(FluxSortant)
sTempLigne = sr.ReadLine()
RaiseEvent ConnectionStatus(sTempLigne)
sTemp = sTempLigne.Split(" ")
Loop While (sTempLigne = "+OK ")
Catch ex As SocketException
RaiseEvent ConnectionStatus("Erreur lors du chargement des messages" & vbCrLf & ex.ToString())
Catch ex As ArgumentException
RaiseEvent ConnectionStatus("Erreur lors du chargement des messages" & vbCrLf & ex.ToString())
End Try
Try
Dim iWordCount As Integer = 0
For iWordCount = 0 To sTemp.Length - 1
If IsNumeric(sTemp(iWordCount)) Then
Return Integer.Parse(sTemp(iWordCount))
End If
Next
Catch ex As Exception
RaiseEvent ConnectionStatus(ex.Message)
Return 0
End Try
End Function
End Class
je veux tout simplement récupérer le nombre de mes mails(compte @live.fr),j'ai un bouton et un textbox:
code bouton:
Dim a As clientpop3 = New clientpop3()
Dim usr As String = "nsuadi@live.fr"
Dim pwd As String 'mot de passe
a.PassWord = pwd
a.UserName = usr
a.ServerName = "pop3.live.com" ' pop.mail.yahoo.fr
a.ServerPortNumber = 110
a.connect()
TextBox1.Text = a.NumberOfMails()
il ne m'affiche pas le nombre des mails mais à chaque fois '0'...alors quel pourrait être le problème??
Merci d'avance!!
Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...
Visual Basic .Net is the best and vb6.0