Пишем программу для анонимной отправки почты

n0ns3ns3
icq: 8887337

Сегодня мы с вами будем писать программу для анонимной отправки почты через прокси сервер.
Первым делом открываем пиво, то есть дельфи и размещаем на форме следующие компоненты:
С вкладки Indy Clients:
IdSMTP1 – 1 штука;
С вкладки Indy Misc:
IdMessage1 – 1 штука – эти два компоненты необходимы нам для непосредственной отправки почты. Но нам будет нужно также работать с SOCKS протоколом, для этого размещаем дополнительные компоненты:
С вкладки Indy I/O Handlers на форум кидаем компонент - IdIOHandlerSocket1, а с вкладки Indy Misc - IdSocksInfo1;
Теперь необходимо установить связи между компонентами:
В списке свойств компонента IdSMTP1 находим IOHandler и указываем там IdIOHandlerSocket1 (это можно сделать и программно: IdSMTP1.IOHandler := IdIOHandlerSocket1;).
Идем дальше, щелкаем по компоненту IdIOHandlerSocket1, и в свойстве SocksInfo указываем IdSocksInfo1 (программно: IdIOHandlerSocket1.SocksInfo := IdSocksInfo1;)
Так, теперь нам необходимо разместить на форме компоненты для ввода неоходимой информации:
Кидаем на форму
2 компонента edit и переименовываем их соответственно в edHost и edPort – они нам необходимы для указания хоста и порта SMTP сервера.
3 компонента edit, переименовываем их в
edFrom – от кого пришло письмо
edTO – кому отправляем
edSubj – тема письма
2 компонента edit, переименовываем их соответственно в edProxyHost и edProxyPort – для указания хоста и порта прокси сервера.
Также нам неоходим один компонент Memo (переименовываем в meBody - в нем будет находиться текст письма) и 2 кнопки – Button (одну переименуем в btnSend – для отправки, другую в btnExit – выход из программы).
В итоге у вас должна получиться форма, похожая на эту:

http://ist.bratsk.org/files/screen.gif

Подготовительный этап на этом можно считать законченным, теперь ты смело можешь сделать пару глотков твоего любимого пива, перевести дыхание и двигаться дальше
Нам необходимо создать обработчик на событие – клик по кнопке btnSend, щелкни по кнопке дважды, у тебя появится следующая процедура:

CODE
procedure TForm1.btnSendClick(Sender: TObject);
begin

end;


это наша «заготовка» с которой мы и будем работать.

В теле это процедуре пишем следующий код:

CODE
procedure TForm1.btnSendClick(Sender: TObject);
begin
 //работаем только с SOCKS прокси версии 5
 IdSocksInfo1.Version := svSocks5; //(svSocks4, svSocks4A)
 //хост прокси
 IdSocksInfo1.Host := edProxyHost.Text;
 //порт прокси
 //конвертируем текстовое значение в целочисленное
 IdSocksInfo1.Port := StrToInt(edProxyPort.Text);


 //Настройка SMTP
 //хост SMTP сервера
 IdSMTP1.Host := edHost.Text;
 //порт SMTP
 //конвертируем текстовое значение в целочисленное
 IdSMTP1.Port := StrToInt(edPort.Text);

 //Настройка сообщения (IdMessage1)
 with IdMessage1 do
   begin
     From.Text := edFrom.Text; //от кого
     Recipients.EMailAddresses := edTO.Text; // кому
     Subject := edSubj.Text; // тема письма
     Body.Text := meBody.Text; // текст (тело письма)
   end;

 //отправка почты
 try
   try
     IdSMTP1.Connect(100000); //соединение с сервером
     IdSMTP1.Send(IdMessage1); //отправка потового сообщения
   //в случае ошибке выводим сообщение
   except on E:Exception do
     begin
       ShowMessage('ОШИБКА: ' + E.Message);
     end;
   end;
 finally
   // в завершении - если подключены,
   //то отключаемся от сервера
   if IdSMTP1.Connected then
     begin
       IdSMTP1.Disconnect;
       IdIOHandlerSocket1.Close;
     end;
 end;
end;


думаю, что с данным кодом будет все понятно, потому как я старался все подробно закомментировать %)

SMTP сервер с которым вы будете работать не должен требовать аутентификации!!!

Ну и на последок нам остается сделать выход из программы:

CODE
procedure TForm1.btnExitClick(Sender: TObject);
begin
 //потому как в проекте лишь одна форма,
 //достаточно выполнить эту процедуру
 Close;
end;


Сразу хочу сказать, что при тестировании программы необходимо тщательно выбрать прокси сервер,
также после легкой манипуляции с кодом можно написать программу для простой отправки почты (без прокси)

Вот и все

ЗЫ данная статья не претендует на полноту рассмотрения и описания затронутой темы, но автор (я) надеятся, что она (статья) поможет вам написать свой почтовый клиент, не хуже The BAT!
X