Язык Visual Basic на платформе .NET.
Модераторы: Ramzes, Sebas
-
krukovis84
-
- Продвинутый пользователь
-
-
- Сообщения: 108
- Зарегистрирован: 04.08.2009 (Вт) 11:16
- Откуда: Кочевник
krukovis84 » 14.02.2012 (Вт) 16:03
Добрый день!
В .NET реализована отправка почты классом System.Net.Mail, а получение не реализовано.
Вопрос - может быть получение писем реализовано энтузиастами в каком нибудь виде и где нибудь лежит для ознакомления? Очень был бы благодарен за примеры. Хочется научится выкачивать почту например с Google и с рабочего сервера.
-
iGrok
-
- Артефакт VBStreets
-
-
- Сообщения: 4272
- Зарегистрирован: 10.05.2007 (Чт) 16:11
- Откуда: Сетевое сознание
iGrok » 16.02.2012 (Чт) 13:48
Про IMAP забыл.
label:
cli
jmp label
-
krukovis84
-
- Продвинутый пользователь
-
-
- Сообщения: 108
- Зарегистрирован: 04.08.2009 (Вт) 11:16
- Откуда: Кочевник
krukovis84 » 18.02.2012 (Сб) 10:58
Принято. Спасибо.
-
Arum
-
- Начинающий
-
-
- Сообщения: 10
- Зарегистрирован: 09.08.2011 (Вт) 0:50
- Откуда: Питер
-
Arum » 28.02.2012 (Вт) 14:25
Скачать письма можно так (VB2010 Framework 4)
Код не оптимален, но работает.
- Код: Выделить всё
'закачать письма (использование)
Private Sub DL_Mail(sLogin As String, sPassword As String)
Dim sMail As New Pop3Client
Dim sMailCnt As Integer = sMail.NewConnect("pop3.mail.ru", sLogin, sPassword)
If sMailCnt = -1 Then sMail.Close() : Exit Sub 'Ошибка коннекта к серверу, либо ящик не существует
If sMailCnt = -2 Then sMail.Close() : Exit Sub 'Сервер возвратил ошибку
lblMailCountCur.Text = sMailCnt 'количество писем
Dim sMailBuffer As StringBuilder = New StringBuilder
For z = 1 To sMailCnt
sMailBuffer.Append(sMail.GetMessage(z))
If Options.OptMail.DeleteMail = True Then sMail.DelMessage(z) 'если нужно удалить письмо, которое скачали
Next
sMail.Close()
End Sub
- Код: Выделить всё
Imports System.Net.Sockets
Imports System.IO
Imports System.Text
Public Class Pop3Client
Private Stream As NetworkStream
Private sStreamReader As StreamReader
Private sStreamWriter As StreamWriter
Private sMessagesCount As Integer ' Количество Сообщений
'возвращает, сколько писем на сервере
Public Function NewConnect(ByVal Server As String, ByVal Login As String, ByVal Password As String) As Integer
On Error GoTo Error_
Dim tRetMsg As String
NewConnect = 0
Stream = New TcpClient(Server, 110).GetStream
sStreamWriter = New StreamWriter(Stream, System.Text.Encoding.Default)
sStreamReader = New StreamReader(Stream, System.Text.Encoding.Default, True)
Dim answer As String
tRetMsg = SendText("USER " & Login & vbCrLf)
tRetMsg = SendText("PASS " & Password & vbCrLf)
tRetMsg = SendText("STAT" & Chr(13) & Chr(10))
If tRetMsg.Length > 3 Then
If tRetMsg.Substring(0, 4) = "-ERR" Then
NewConnect = -2 'ошибка
Exit Function
End If
End If
tRetMsg = SendText("STAT" & Chr(13) & Chr(10))
sMessagesCount = Split(tRetMsg, " ")(1)
NewConnect = sMessagesCount
Exit Function
Error_:
NewConnect = -1 'ошибка
End Function
Public Function GetMessage(ByVal x As Integer) As String ' x - Номер сообщения
sStreamWriter.WriteLine("RETR " & x)
sStreamWriter.Flush()
Dim j As New System.Text.StringBuilder
Dim Text As String
Do
Text = sStreamReader.ReadLine
If tRetMsg = "." Then Exit Do
j.AppendLine(Text)
Loop
Return j.ToString
End Function
'удалить письмо
Public Sub DelMessage(ByVal x As Integer) ' x - Номер сообщения
sStreamWriter.WriteLine("DELE " & x) 'удалить письмо
sStreamWriter.Flush()
End Sub
'отправка команды
Private Function SendText(ByVal comand As String) As String
On Error Resume Next
sStreamWriter.WriteLine(comand)
sStreamWriter.Flush()
Return sStreamReader.ReadLine()
End Function
'закрыть
Public Sub Close()
SendText("QUIT")
Me.Finalize()
End Sub
Protected Overrides Sub Finalize()
If sStreamWriter IsNot Nothing Then
sStreamWriter.Dispose()
sStreamWriter.Close()
End If
If sStreamReader IsNot Nothing Then
sStreamReader.Dispose()
sStreamReader.Close()
End If
If Stream IsNot Nothing Then
Stream.Dispose()
Stream.Close()
End If
MyBase.Finalize()
End Sub
End Class
Вернуться в Visual Basic .NET
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35