Buenas!
aquí os dejo una función para poder recibir correo. En el Framework 2.0 de .Net, existe un namespace system.Net.Mail, que funciona muy bien (y sencillo de usar) para enviar correo, pero no para recibirlo. Para ello, nos construimos nosotros la trama y abriendo un socket con el protocolo TCP, podemos conectarnos al servidor de correo y leerlo.
Ahí va:
Sub Recibir()
Dim hostName As String = "pop.servidoredecorreo.com" 'Pon el hostname de tu servidor de correo entrante
Dim userName As String = "GRUPO\Usuario" 'Pon tu Grupo\Usuario
Dim userPassword As String = "Password" ' Pon tu Password
Dim tcpClient As Net.Sockets.TcpClient = New Net.Sockets.TcpClient
Dim messageNumber As String = "1"
Dim returnMessage As String
Dim sTemp As String
Try
tcpClient.Connect(hostName, 110)
Dim networkStream As Net.Sockets.NetworkStream = tcpClient.GetStream()
Dim bytes(tcpClient.ReceiveBufferSize) As Byte
Dim sendBytes As Byte()
networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
sendBytes = System.Text.Encoding.ASCII.GetBytes("User " + userName + vbCrLf)
networkStream.Write(sendBytes, 0, sendBytes.Length)
sTemp = networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
sendBytes = System.Text.Encoding.ASCII.GetBytes("Pass " + userPassword + vbCrLf)
networkStream.Write(sendBytes, 0, sendBytes.Length)
sTemp = networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
sendBytes = System.Text.Encoding.ASCII.GetBytes("STAT" + vbCrLf)
networkStream.Write(sendBytes, 0, sendBytes.Length)
sTemp = networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
sendBytes = System.Text.Encoding.ASCII.GetBytes("RETR " + messageNumber + vbCrLf)
networkStream.Write(sendBytes, 0, sendBytes.Length)
System.Threading.Thread.Sleep(500)
networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
returnMessage = System.Text.Encoding.ASCII.GetString(bytes)
Console.WriteLine(returnMessage.ToString)
sendBytes = System.Text.Encoding.ASCII.GetBytes("QUIT" + vbCrLf)
networkStream.Write(sendBytes, 0, sendBytes.Length)
tcpClient.Close()
Catch ex As Exception
Console.WriteLine("No se puede recibir correo o el buzon de entrada esta vacio")
End Try
End Sub
Espero que os haya sido útil!
Saludos!!
miércoles, 22 de abril de 2009
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario