Форум: "Сети";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];
Внизсокс+смтп Найти похожие ветки
← →
Денис (2004-06-13 22:46) [0]Добрый день, уважаемые мастера! Подскажите, плиз. Я использую 7 делфу и инди 9. написал свой небольшой клиент по отправке почты (курсач) и решил сделать работу через соксы. задаю все свойства компонета сокс, но почему-то подключившись к соксе клиент параллельно подключается к смтп, а НЕ последовательно (через соксу). подскажите как сделать так чтобы клиент коннектился к смтп через соксу. где эта галочка "юз сокс ту коннект" :) С уважением, Денис.
← →
Денис (2004-06-14 17:01) [1]Народ!!! подскажите плз!!!!
← →
Graber (2004-06-15 01:55) [2]Отправка и получение почты
Одна из наиболее частых операций в Интернете — это отправка и прием сообщений электронной почты. В этой книге мы не будем останавливаться на проблеме написания почтовых программ, поскольку множество хороших универсальных программ уже существует. Примеры можно найти в демонстрационных файлах Indy. Но кроме написания многофункциональных программ можно делать некоторые интересные вещи с почтовыми компонентами и протоколами. Условно разделим эти возможности на две группы:
Автоматическое создание почтовых сообщений. Можно написать приложение, содержащее окно About (о программе), чтобы отправить уведомление о регистрации обратно в службу маркетинга, или специальный пункт меню, чтобы отправить запрос в службу технической поддержки. Можно даже создать приложение так, чтобы в случае ошибки автоматически устанавливалось соединение со службой поддержки. Еще можно автоматически отправлять сообщения на листы рассылки или генерировать сообщения на веб-сайте (подробнее об этом — в конце главы).
Использование почтовых протоколов для общения с пользователями, которые редко подключаются к сети. В ситуации, когда необходимо передать информацию от одного пользователя другому (причем оба пользователя не подключены к сети постоянно), можно написать серверное приложение для син- хронизации их доступа и снабдить каждого клиентским приложением для взаимодействия с сервером. Другой вариант — использовать имеющийся почтовый сервер и написать две программы, основанные на почтовых протоколах. При таком способе передачи данные, как правило, представлены в специальном формате, поэтому удобнее создать для таких сообщений отдельный почтовый ящик. Можно исправить пример IndyDbSock так, чтобы использовать почтовые сообщения вместо сокетного соединения. Основное преимущество такого подхода в том, что можно работать через брандмауэры, и не страшны отключения сервера, так как информация сохраняется на почтовом сервере.
Отправка и получение почты
Для работы с протоколами электронной почты при помощи Indy необходимо поместить в сообщение компонент IdMessage, заполнить его данными, а затем отправить при помощи компонента IdSMTP. Чтобы получить сообщение из почтового ящика, используется компонент IdPop3, который возвращает объект IdMessage. Для того чтобы получить общее представление о работе подобных приложений, рассмотрим следующую программу. Она создана для отправки сообщений сразу нескольким людям. Их адреса берутся из файла формата ASCII. Эта программа первоначально использовалась для отправки сообщений людям, подписавшимся на рассылку на веб-сайте. Затем в нее были добавлены возможность работы с базой данных и автоматическое чтение журналов подписчиков. Но первая версия еще может послужить хорошим вводным примером использования SMTP-компонентов Indy.
Программа SendList хранит список имен и адресов в локальном файле, который отображается в окне списка. При помощи ряда кнопок можно добавлять в список записи, удалять их или редактировать. При выходе из программы все изменения автоматически сохраняются.
Рассмотрим следующую часть программы. В верхней части диалогового окна, изображенного на рис. 19.3, можно ввести тему письма, адрес отправителя, информацию, используемую для соединения с сервером (имя хоста, имя пользователя, а также пароль, если он необходим).
Рис. 19.3. Программа SendList во время проектирования
Значение полей редактирования можно постоянно хранить в INI-файле. Но лучше этого не делать, так как в этом случае настройки вашего почтового соединения станут общедоступными. Значения полей редактирования и список адресов позволяют отправлять несколько сообщений, настроив каждое при помощи следующего кода:
procedure TMainForm.BtnSendAllClick(Sender: TObject);
var
nItem: Integer;
Res: Word;
begin
Res := MessageDlg ("Start sending from item " +
IntToStr (ListAddr.ItemIndex) + " (" +
ListAddr.Items [ListAddr.ItemIndex] + ")?"#13 +
"(No starts form 0)",
mtConfirmation,
[mbYes, mbNo, mbCancel], 0);
if Res = mrCancel then
Exit;
if Res = mrYes then
nItem := ListAddr.ItemIndex
else
nItem := 0;
// соединение
Mail.Host := eServer.Text;
Mail.Username := eUserName.Text;
if ePassword.Text <> "" then
begin
Mail.Password := ePassword.Text;
Mail.AuthenticationType := atLogin;
end;
Mail.Connect;
// отправка сообщения так же, как обычного сообщения
try
// установка фиксированной части заголовка
MailMessage.From.Name := eFrom.Text;
MailMessage.Subject := eSubject.Text;
MailMessage.Body.SetText (
reMessageText.Lines.GetText);
MailMessage.Body.Insert (0, "Hello");
while nItem < ListAddr.Items.Count do
begin
// показать текущий выбор
Application.ProcessMessages;
ListAddr.ItemIndex := nItem;
MailMessage.Body [0] := "Hello " + ListAddr.Items [nItem];
MailMessage.Recipients.EMailAddresses := ListAddr.Items [nItem];
Mail.Send(MailMessage);
Inc (nItem);
end;
finally
// готово
Mail.Disconnect;
end;
end;
← →
Piter © (2004-06-15 01:58) [3]Денис (13.06.04 22:46)
поподробнее как организовано соединение, какие компоненты используешь, какие свойства устанавливаешь, приведи код...
ну мы же не телепаты
← →
Stas (2004-06-15 15:14) [4]RTFM
← →
Graber (2004-06-17 02:02) [5]Помоему здесь всё прекрасно расписано....вообще зайдии на сайт
Indy там дофига есть примеров и ещё в инете есть книга Delphi 7 для профессионалов там очень подробно расписано про некоторые компоненты Indy
← →
nikkie © (2004-06-17 02:24) [6]>С уважением, Денис.
если действительно с уважением, то пиши английские слова и аббревиатурыы английскими буквами. несколько минут я пытался врубиться, о чем речь, только потому, что "сокс" воспринял как "сокет". а напиши ты SOCKS - все было бы понятно. только, извини, как работать через socks в Indy8 я знаю, а с Indy9 разбираться лениво. будет код - будет, о чем поговорить.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.08.15;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.037 c