Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: мыло.... Добавлено: 31.12.03 00:05  

Автор вопроса:  ZoomerSD | ICQ: 148640473 

пожалуйста, помогите, я знаю что тема сто раз обжованая, я искал её по форуму, но нечего не нашол, все темнят толковых кодов нету..

вобщем проблема: как отправить мыло на опред. адрес через smtp-сервер?

Ответить

  Ответы Всего ответов: 7  

Номер ответа: 1
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #1
Добавлено: 31.12.03 00:50

Плохо искал, вот шас вышлю тебе прогу, которая отсылает слово "Cool!" на твой емайл

Ответить

Номер ответа: 2
Автор ответа:
 ZoomerSD



ICQ: 148640473 

Вопросов: 135
Ответов: 270
 Профиль | | #2 Добавлено: 31.12.03 01:04

пасиба, прогу получил, работает, а как мне ещё тему туда всунть?

Ответить

Номер ответа: 3
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #3
Добавлено: 31.12.03 06:57
В Примерах есть примеры почтовиков...
Вообще, всё предельно просто: используем Winsock для соединения с
сервером, затем общаемся с ним по протоколу SMTP. Протокол тоже
предельно прост.

Ответить

Номер ответа: 4
Автор ответа:
 DaSharm



ICQ: 780477 

Вопросов: 72
Ответов: 1297
 Web-сайт: dasharm.com
 Профиль | | #4
Добавлено: 31.12.03 14:21

Тему сунешь очень просто, после команды Data отсылаешь перед самим сообщением:

winsock1.senddata "Subject: Yo" + vbcrlf + vbcrlf

и дальше сам текст письма:

winsock1.senddata "Bla, bla, bla" + vbcrlf + "." + vbcrlf

Ну и завершаем сеанс:

winsock1.Senddata "QUIT"

Ответить

Номер ответа: 5
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #5
Добавлено: 31.12.03 16:26
DaSharm, не всё так просто. Вот пример (без аутентификации) команд,
которые мы посылаем серверу:

HELO
Mail from: наш мэйл
Rcpt to: чужой мэйл
Data

Потом идёт текст письма (с заголовками), после письма
последовательность vbCrLf & "." & vbCrLf.

После каждой команды сервер должен отвечать. В начале строки ответа
стоит трёхзначное число. Если это 250, то всё нормально, команда
выполнена. А если это не 250, то значит ошибка. После числа идёт
описание ошибки.

Если нужна аутентификация, то там надо ещё кое-чего делать. Я сам пока
это не реализовывал, но уже экспериментально выяснил, что и как надо
делать...

Ответить

Номер ответа: 6
Автор ответа:
 Aндрей



ICQ: 259020622 

Вопросов: 30
Ответов: 71
 Профиль | | #6 Добавлено: 10.05.05 12:10
 Аутентификация - задолбала!Павел,
 подскажите как ее учитывать при работе. Пример бы пригодился.

Ответить

Номер ответа: 7
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #7
Добавлено: 10.05.05 12:26
Привожу изыскания по этой теме Папулова Александра...



Здравствуйте Павел. Вот коротенькая статья по теме нашей переписки.
Если для вашего сайта не годится, то просто прочитайте.
Статья написана "для себя", дабы задокументировать ночное бдение
над этой самой SMTP-авторизацией.
Захотелось мне в своей программульке удобство завести - мозможность
отослать по E-mail коротенькое сообщение. Выяснилось, что послать
письмо на сервер,кроме как на сервер провайдера нет возможности.
Почти все SMTP сервера работают толко с авторизацией пользователя
(защита от спама).
SMTP протокол такой авторизации не предусматривает, а вот ESMTP
(с расширенным списком команд) позволяет провести авторизацию.
Все это известно большинству системных программистов и администраторов,
а информации на русском языке в Интернете почти нет и куда же
начинающему программисту деваться?
Вот посмотрите как сделать авторизацию, к примеру,на сервере Яндекса.
Подразумевается, что читатель знаком с SMTP протоколом (реализован в
вышеназванном примере)
1.Алгоритм авторизации:
По команде EHLO (наверно от HELO, потому не путайте), получаем от сервера
инструкцию авторизации (метод).
О методах читайте в RFC 2554 (SMTP Authentication).
2.Командой AUTH осуществлем авторизацию предписанным сервером методом.
Мы будем рассматривать самый простой, понятный и проверенный метод -
это метод LOGIN.
Листинг "запрос-ответ":
S: - ответ сервера
C: - запрос клиента
Коннектимся к серверу smtp.yandex.ru.
S:220 Yandex ESMTP (NO UCE)(NO UBE) server ready at Fri,
5 Dec 2003 05:21:30 +300
C:EHLO smtp.yandex.ru - получение метода авторизации с сервера
S:250-bingo.yandex.ru expected "EHLO ppp-149-135.dialup.metrocom.ru"
250-SIZE 5000000
250-8BITMIME
250-PIPELINING
250-CHUNKING
250-ENHANCEDSTATUSCODES
250-DSN
250-AUTH=LOGIN
250-AUTH LOGIN - метод
250-STARTTLS
250-ETRN
250 HELP
C:AUTH LOGIN -делаем запрос предписанным методом
S:334 VXNlcm5hbWU6 - слово Username в кодировке base64
C:cMGyc2Vj - посылаем логин
S:334 UGFzc3dvcmQ6 - слово Password: в кодировке base64
C:cG5xbGU= - посылаем пароль
S:235 Authentication successful .- авторизация завершена
Далее идет команда посылка письма.

Пример кода на VB.NET для перекодировки (MSDN):
Dim txtUserName1 As String="MyUserName" 'имя в ASCII кодировке
Dim txtUserName2 As String 'имя в Base64 кодировке
Dim byteArray(System.Text.Encoding.ASCII.GetByteCount(txtUserName1)) As Byte
byteArray = System.Text.Encoding.ASCII.GetBytes(txtUserName1)
txtUserName2 = Convert.ToBase64String(byteArray)
Другие методы:
S:250-AUTH LOGIN PLAIN
C:AUTH PLAIN bWVAcmF2ZW4uZWxrLnJ1AG1lQHJhdmVuLmVsay5ydQBwYXNzd29yZDop
этим методом посылается зашифрованный логин с паролем в кодировке base64
(закодирована строка "логин\0логин\0пароль";).
Насчет универсальности этой строки пока не знаю.
250-AUTH DIGEST-MD5 CRAM-MD5 PLAIN
В этом ответе сервера предписывается пользоваться методом CRAM-MD5
C: AUTH CRAM-MD5
S: 334 PENCeUxFREJoU0NnbmhNWitOMjNGNndAZWx3b29kLmlubm9zb2Z0LmNvbT4=
ZnJlZCA5ZTk1YWVlMDljNDBhZjJiODRhMGMyYjNiYmFlNzg2ZQ==
S: 235 Authentication successful.
Что за метод, читайте в RFC 2554
(если кто-нибудь переведет на рус.яз - будет очень хорошо)
Вот другой, более локаничный пример (нам интересна только строка с AUTH):
C:EHLO mail.infostar.ru
S:250-infoserver.infostar.ru Hello [ppp-130-98.dialup.metrocom.ru]
250-XEXCH50
250-HELP
250-ETRN
250-DSN
250-SIZE 1048576
250-AUTH LOGIN
250 AUTH=LOGIN
C:HELO cMGyc2Vj
S:503 Bad Sequence
Это сервер провайдера отказался дальше работать с почтой. Может попричине
того, что я уже авторизован, ведь без процедуры авторизации письма шлются.
А может существует другой механизм, ведомый только системщикам.
Главное, чтобы после коннекта в ответе сервера содержалась ссылка на ESMTP
протокол. Другой протокол может даже понять команду EHLO,
но в ответе не даст метода авторизации. Такой сервер и ругаться не будет,
а просто "потеряет" ваше письмо. Экспериментируйте!
По большому счету, авторизация требует и логина, и пароля, и
нет провайдера без предоставления ящика под почту, но так приятно
иметь чуть больше свободы себе и пользователям программ.
Возможно, допущены некоторые неточности в описании, но пример реально
работающий и любой может его повторить и продолжить исследование..
Ссылки на некоторые веб ресурсы по теме:
- Описание протоколов SMTP и POP3 (рус.яз) - http://tehnofil.ru/tdwm.html
- "Как выбирать поставщика Интернет-услуг"- статья про E-mail услуги в т.ч. http://www.nestor.minsk.by/kg - "postfix 2, cyrus-sasl 2, kaspersky antivirus, spamassassin, courier-imap, tls, mysql how-to(FreeBSD4LE)"- статья для системных программистов - www.citeforum.ru

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам