На основе одной из тем на форуме создал код для прёма письма.
| Код | Dim sock As System.Net.Sockets.Socket = New System.Net.Sockets.Socket(Net.Sockets.AddressFamily.InterNetwork, Net.Sockets.SocketType.Stream, Net.Sockets.ProtocolType.Tcp) Dim linger As New Net.Sockets.LingerOption(True, 10) Dim addr As Net.IPAddress = Net.Dns.GetHostEntry("pop.mail.ru").AddressList(0) Dim pHost As Net.IPEndPoint = New Net.IPEndPoint(addr, 110)
sock.SetSocketOption(Net.Sockets.SocketOptionLevel.Socket, Net.Sockets.SocketOptionName.Linger, linger) sock.SetSocketOption(Net.Sockets.SocketOptionLevel.Socket, Net.Sockets.SocketOptionName.SendTimeout, 0) sock.SetSocketOption(Net.Sockets.SocketOptionLevel.Socket, Net.Sockets.SocketOptionName.ReceiveTimeout, 0)
sock.Connect(pHost) Dim buff() As Byte Dim ch() As Char ReDim buff(0) ReDim ch(0) Dim instance As Net.Sockets.SocketFlags Dim encoder As System.Text.ASCIIEncoding = New System.Text.ASCIIEncoding
instance = Net.Sockets.SocketFlags.None
buff = encoder.GetBytes("USER mylogin@mail.ru") sock.Send(buff, buff.GetUpperBound(0), instance)
buff = encoder.GetBytes("PASS mypass") sock.Send(buff, buff.GetUpperBound(0), instance)
buff = encoder.GetBytes("STAT") sock.Send(buff, buff.GetUpperBound(0), instance)
ReDim buff(255)
sock.Receive(buff, buff.GetUpperBound(0), instance) ch = encoder.GetChars(buff) TextBox1.Text = ch
|
Проверял: на USER отвечает +OK mylogin на PASS +OK, хотя должен ещё и писать сколько писем, на STAT тоже пишет +OK, как это понимать? это я в коде ошибся? или просто что-то нетак делаю с сервером? |