Отправка электронной почты
В последнее время мне часто задают вопрос - ну как же написать программу, отправляющую электронную почту? Ну вот тут я что-то набросал. Это не есть полностью работоспособный код, так кое-что для затравки. Хдесь я опишу основной принцип и последовательность команд.
Будем считать, что адрес отправителя хранится в переменной 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, помогу).
Отправка электронной почты
www.vbstreets.ru
www.vbstreets.ru
Оставить комментарий
Комментарии
1.
20 января 2007, 20:53:05
Незнаю назнач. эт сампл , но а где же
winsock.Remoteport=?
'winsock.Connect
Call Delay_or_Pause()
Йок они чтоль?
winsock.Remoteport=?
'winsock.Connect
Call Delay_or_Pause()
Йок они чтоль?
2.
18 декабря 2006, 01:00:08
Здесь бы еще описать как пройти аутентификацию на сервере, желательно через pop3.