Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > SMTP - отправка почты через прокси


Автор: Lence 2.9.2006, 12:11
Весь форум перерыл в поисках данных вопрос снизу

1)Проблема в том что у меня сервак стоит за внутренним прокси 
Написан клиент отправки на idSMTP - пустил его через SOCKS 5 версии, но внутренний прокси не поддерживает SOCKS, только HTTP и HTTPS. 
Кто может дать пример, как можно idSMTP прикрутить к http прокси ???


2) Какие нужно поставить настройки чтоб письмо уходило в формате HTML а не plaintext ???

3) Как отправить письмо с нормальной русской кодировкой ? а то когда приходят письма на русском языке то вместо букв - каракули .... 

Просьба дайте примеры .... 
Спасибо большое .... 

Автор: Matematik 2.9.2006, 12:58
1) ты обычную почту как отсылаешь?
прокси HTTP и HTTPS созданы для протокола HTTP, а не для почты.
2) Content-Type
3) хз

Автор: Lence 2.9.2006, 17:26
Цитата(Matematik @  2.9.2006,  12:58 Найти цитируемый пост)
1) ты обычную почту как отсылаешь?
прокси HTTP и HTTPS созданы для протокола HTTP, а не для почты.
2) Content-Type
3) хз
 


Обычно работаю через SMTP когда был NAT - сейчас нат закрыт и стоит прокси сервер который не дает подрубиться к SMTP за проксёй. В общем я так понимаю не получится у меня отправить почту через прогу настроенную через HTTP прокси ? 
неужели SMTP не поддерживает HTTP прокси ??? Только через Носок ?

Цитата

2) Content-Type

это где ставить ??? 

Автор: Matematik 2.9.2006, 17:48
Кажется так, не проверял
IdMessage.ContentType := 'text/html; charset=windows-1251';

Автор: Lence 2.9.2006, 18:28
Цитата(Matematik @  2.9.2006,  17:48 Найти цитируемый пост)
IdMessage.ContentType := 'text/html; charset=windows-1251'; 

Благодарю - работает !!!


а насчет HTTP - в общем я в пролете ???? 

может ктонить извращался и у когто получилось всетаки ? 

Автор: Демо 4.9.2006, 00:29
Lence, 
Прочитай в RFC про команду Connect для подключения к proxy...

Автор: Snowy 4.9.2006, 09:25
Модератор: Пожалуйста, один топик - один вопрос.

Протокол SMTP не имеет возможностей соединяться через прокси.
Его можно смаршрутизировать.
Но HTTP-прокси работает на уровне протокола. А SMTP под это не заточен.

PS. Можно воспользоваться программами-туннелями.

Автор: Lence 4.9.2006, 13:18



Цитата(Snowy @  4.9.2006,  09:25 Найти цитируемый пост)
Модератор: Пожалуйста, один топик - один вопрос.Протокол SMTP не имеет возможностей соединяться через прокси.Его можно смаршрутизировать.Но HTTP-прокси работает на уровне протокола. А SMTP под это не заточен.PS. Можно воспользоваться программами-туннелями.


не хотелось бы юзать программы-туннели  - хотелось бы самому организовать маршрутизацию в самой же программе
Это реально ?


Цитата(Демо @  4.9.2006,  00:29 Найти цитируемый пост)
Прочитай в RFC про команду Connect для подключения к proxy...


а можно ссылку ?  

Автор: Snowy 4.9.2006, 13:27
SMTP через http прокси не полезет.
Как вариант: создать в инете веб форму, которая через php отсылает почту.
Соединяться с ней по http и давать запрос на отправки мыла.
Но напрямую - никак. Только со сторонними извращениями, которые подразумевают отправку через сервер, находящийся в инете и управляемый по http.

Автор: Lence 4.9.2006, 13:30
Цитата(Snowy @  4.9.2006,  13:27 Найти цитируемый пост)
SMTP через http прокси не полезет.Как вариант: создать в инете веб форму, которая через php отсылает почту.Соединяться с ней по http и давать запрос на отправки мыла.Но напрямую - никак. Только со сторонними извращениями, которые подразумевают отправку через сервер, находящийся в инете и управляемый по http.

Дям.... это плохо ...  smile А если через сокс5 ?

Автор: Snowy 4.9.2006, 13:34
Через Socks5 можно.
Можно также через специализированные почтовые прокси.
Как правило, у большинства проксей есть маршрутизация почты.
Правда не всегда она включена. Но возможность такая есть.

Автор: Lence 4.9.2006, 14:28
Цитата(Snowy @  4.9.2006,  13:34 Найти цитируемый пост)
Через Socks5 можно.Можно также через специализированные почтовые прокси.Как правило, у большинства проксей есть маршрутизация почты.Правда не всегда она включена. Но возможность такая есть.

Snowy,
 спасибо большое smile  обнадежили.
На форуме Girder выкладывал пример по отправке почты прям на серер- там я добавил перенаправение через Socks5.
буду тогда пробовать ... может получится .. 

Автор: Демо 4.9.2006, 17:09
Обрати внимание на тему http://forum.vingrad.ru/index.php?showtopic=95699&hl=proxy

Автор: Lence 4.9.2006, 17:55
Демо, спасибо за ссылку .... правда я ее уже смотрел - но гляну еще раз ... smile 

Автор: Lence 4.9.2006, 18:17
http://forum.vingrad.ru/index.php?showtopic=49623&st=15

В самом низу я добавил работу через Socks5 - но проверить не могу так как не поднят у меня нигде Socks5.

Автор: Eugene_Bond 8.9.2006, 17:07
Цитата(Lence @  4.9.2006,  18:17 Найти цитируемый пост)
но проверить не могу так как не поднят у меня нигде Socks5. 

дык, полно бесплатных в инете.
правда там живучесть меньше 1%, но найти живого вполне можно.

Автор: Lence 9.9.2006, 17:29
Цитата(Eugene_Bond @  8.9.2006,  17:07 Найти цитируемый пост)
 дык, полно бесплатных в инете.правда там живучесть меньше 1%, но найти живого вполне можно.

найти то нашел .... но не отправляет ... точнее у меня носок в локалке не работает ....  а почемуто отправляет .. без всяких ошибок .. хотя Socks может и не работать ... поэтому и спрашиваю как сделать чтоб через Socks отправлялся http://forum.vingrad.ru/index.php?showtopic=49623&view=findpost&p=842011 .... 

Автор: Eugene_Bond 10.9.2006, 12:42
Видимо для начала надо проверить живой ли сокет.

Автор: Lence 10.9.2006, 14:55
Цитата(Eugene_Bond @  10.9.2006,  12:42 Найти цитируемый пост)
Видимо для начала надо проверить живой ли сокет. 

что ты имеешь ввиду ???  каким образом проверить ??? 

Тот пример писал Girder, я только добавил вариант через сокс .... в любом случае отправляется все на ура ... но никаким носком и не пахнет smile 

Автор: Eugene_Bond 15.11.2006, 12:16
Блин, я и забыл про эту тему smile


Цитата(Lence @  10.9.2006,  14:55 Найти цитируемый пост)
каким образом проверить ??? 

Попытаться через этот сокет открыть самого себя.
В идеале -- обратиться к своему же серверу к 25-му порту (достаточно HELO отправить и считать ответ). 

Автор: mai62 16.11.2006, 00:09
Можно сделать тунель через http прокси с помощью метода connect. Если кто сомневается, вот моя программка http://handycache.ru/download.php?MailPorter.exe. Сделана на двух TIdMappedPortTCP, один для pop, а другой для smtp сервера. При поступлении запроса почтовой программы прокси серверу посылается команда connect с удаленным сервером и дальше почтовик работает через созданный тунель.
Код

procedure TForm1.IdMappedPortTCP1OutboundConnect(  AThread: TIdMappedPortThread; AException: Exception);
var s: String;
begin
  if not assigned(AException) and AThread.OutboundClient.Connected then
  begin
    s:= 'CONNECT '+ExPopIP.Text+':'+ExPopPort.Text +' HTTP/1.1'#13#10;
    AThread.OutboundClient.Write(s+#13#10);
  end;
end;

procedure TForm1.IdConnectionInterceptReceive(ASender: TIdConnectionIntercept; AStream: TStream);
var
  s: String;
  n: Integer;
begin
  if TMyIntercept(ASender).AnswerReceived then Exit;
  s:= ReadToString(AStream);
  n:= Pos('HTTP/1.0 200 Connection established'#13#10, s);
  if n>0 then
  begin
    n:= Pos(#13#10#13#10, s);
    if n>0 then
    begin
      Delete(s, 1, n+3); // Удаляется ответ 'Connection established' от прокси, почтовая программа его не ждет
      AStream.Size:= 0;
      if s<>'' then
      begin
        AStream.Write(s[1], Length(s));
        AStream.Seek(0, 0);
        TMyIntercept(ASender).AnswerReceived:= True;
      end;
    end;
  end;
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)