Гайдар
Магдануров
Отправка
электронной почты
В последнее время мне часто задают
вопрос - ну как же написать программу, отправляющую электронную почту?
Ну вот тут я что-то набросал. Это не есть полностью работоспособный код, так
кое-что для затравки. Хдесь я опишу основной принцип и последовательность
команд.
Будем считать, что адрес
отправителя хранится в переменной
FromUser, адрес получателя в переменной
ToUser, тема сообщения -
Subject, сообщение - Message.
Из переменной FromUser
извлекаем переменную FromHost
(InStr и
Right - относительно @).
Событие начала сеанса.
winsock.Close 'Закрываем на всякий случай
возможно открытые сеансы
winsock.RemoteHost = FromHost
'Сообщаем,
откуда происходит отправление
winsock.Connect
'Соединяем
Private Sub winsock_Connect()
'При соединении
возникает такое событие
Data = "RSET" & vbCrLf & "HELO " & winsock.LocalIP &
vbCrLf 'Сообщаем наш
IP
winsock.SendData Data
Data = "MAIL FROM: " & FromUser &
vbCrLf 'Сообщаем от кого
сообщение
winsock.SendData Data
Data = "RCPT TO: " & ToUser &
vbCrLf 'Сообщаем кому сообщение
winsock.SendData Data
Data = "DATA" & vbCrLf 'Посылаем
команду DATA
winsock.SendData Data
Data = "Subject: " & txtSubject.Text & vbCrLf & vbCrLf &
Message & vbCrLf 'Посылаем
тему сообщению
winsock.SendData Data
Data = "." & vbCrLf
'Заканчиваем сообщение
winsock.SendData Data
Data = "QUIT" & vbCrLf 'Завершаем
сеанс
winsock.SendData Data
End Sub
Private Sub
winsock_DataArrival(ByVal bytesTotal As Long)
'Для отладки просматриваем то, что приходит с сервера
winsock.GetData Data, vbString
Debug.Print "[Получено]: " & Data
End Sub
Private Sub winsock_Error(Number As Integer, Description As String, Scode As
Long, Source As String, HelpFile As String, HelpContext As Long, CancelDisplay
As Boolean)
MsgBox Description, vbOKOnly + vbCritical, "Ошибка!"
End Sub
Опять же - это не полностью
рабочая программа, а только зарисовка. Делайте сами. (Если кто-нибудь что-то
сделает - пишите мне на
gaidar@vbstreets.ru, помогу).
|