+ Ответить в теме
Показано с 1 по 5 из 5

Тема: Статья: анонимная отправка почты

  1. #1
    Джедай nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь
    Регистрация
    22.01.2005
    Сообщений
    3,753
    Поблагодарил(а)
    419
    Получено благодарностей: 1,257 (сообщений: 528).

    По умолчанию Статья: анонимная отправка почты

    Сегодня мы с вами будем писать программу для анонимной отправки почты через прокси сервер.
    Первым делом открываем пиво, то есть дельфи ;) и размещаем на форме следующие компоненты:
    С вкладки Indy Clients:
    IdSMTP1 ***8211; 1 штука;
    С вкладки Indy Misc:
    IdMessage1 ***8211; 1 штука ***8211; эти два компоненты необходимы нам для непосредственной отправки почты. Но нам будет нужно также работать с 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 ***8211; они нам необходимы для указания хоста и порта SMTP сервера.
    3 компонента edit, переименовываем их в
    edFrom ***8211; от кого пришло письмо
    edTO ***8211; кому отправляем
    edSubj ***8211; тема письма
    2 компонента edit, переименовываем их соответственно в edProxyHost и edProxyPort ***8211; для указания хоста и порта прокси сервера.
    Также нам неоходим один компонент Memo (переименовываем в meBody - в нем будет находиться текст письма) и 2 кнопки ***8211; Button (одну переименуем в btnSend ***8211; для отправки, другую в btnExit ***8211; выход из программы).
    В итоге у вас должна получиться форма, похожая на эту:


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

    Код:
    procedure TForm1.btnSendClick(Sender: TObject);
    begin
    
    end;
    это наша «заготовка» с которой мы и будем работать.

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

    Код:
    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 сервер с которым вы будете работать не должен требовать аутентификации!!!

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

    Код:
    procedure TForm1.btnExitClick(Sender: TObject);
    begin
      //потому как в проекте лишь одна форма,
      //достаточно выполнить эту процедуру
      Close;
    end;
    Сразу хочу сказать, что при тестировании программы необходимо тщательно выбрать прокси сервер,
    также после легкой манипуляции с кодом можно написать программу для простой отправки почты (без прокси) :)

    Вот и все ;)

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


    2005 (с) by n0ns3ns3
    icq: 8887337
    Телевизор — это просто маленькое прозрачное окошко в трубе духовного мусоропровода. © В. Пелевин.

  2. #2
    LossOS
    Guest

    По умолчанию

    ну уж добавил бы и прикрепление файлика что ли...

    и зачем такие сложности хост, порт?
    обычно вполне хватает указать что-то типа smtp.irtel.ru

  3. #3
    Ветеран nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты nobody Набираю обороты Аватар для nobody
    Регистрация
    03.06.2005
    Адрес
    Lost in Space...
    Возраст
    41
    Сообщений
    1,126
    Поблагодарил(а)
    19
    Получено благодарностей: 161 (сообщений: 101).

    По умолчанию

    Ни один нормально настроенный Smtp сервер не примет такое письмо, т.к. нет Mx записи для хоста в днс. А тот, который примет, наверняка уже внесен в Ordb.

  4. #4
    Джедай nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь nons Трогаюсь
    Регистрация
    22.01.2005
    Сообщений
    3,753
    Поблагодарил(а)
    419
    Получено благодарностей: 1,257 (сообщений: 528).

    По умолчанию

    smtp.irtel.ru как раз и есть хост
    если стоит сервак настроенный не под стандарт, то порт может отличаться от 25, а указывает его надо всегда
    что бы не говорили, все нормально отправляет
    Телевизор — это просто маленькое прозрачное окошко в трубе духовного мусоропровода. © В. Пелевин.

  5. #5
    LossOS
    Guest

    По умолчанию

    Цитата Сообщение от Qwadrat
    Ни один нормально настроенный Smtp сервер не примет такое письмо, т.к. нет Mx записи для хоста в днс. А тот, который примет, наверняка уже внесен в Ordb.
    значит нужно потрудиться чтобы найти нормально настроенный...
    подобные рассыльники работают на ура практически везде

+ Ответить в теме

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

     

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
Рейтинг@Mail.ru
Администрация сайта не выражает согласия
с высказыванием участников форума и не несет
ответственности за их содержание.

Копирование любого материала возможно только
при наличии ссылки на сайт.