Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.25;
Скачать: CL | DM;

Вниз

посылка почты   Найти похожие ветки 

 
ORMADA ©   (2004-05-25 09:39) [0]

Можно ли как то средствами вынЪАПИ послать почту ?
Можно конечно заюзать MAPI но он гад отправляет через почтовик по умолчанию, а хотелось бы бы без него
Возможно ли это ?
Лучше бы даж без формы как в командной строке


 
[lamer]Barmaglot ©   (2004-05-25 13:07) [1]

FAQ?

http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988621410&n=20


 
ORMADA ©   (2004-05-25 14:49) [2]

А чё такое TRASConn он на это рушается


 
Игорь Шевченко ©   (2004-05-25 22:21) [3]


> Можно конечно заюзать MAPI но он гад отправляет через почтовик
> по умолчанию


Эт как ?


 
ORMADA ©   (2004-05-26 07:31) [4]

Дык вот так... пример по ссылке http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988621410&n=20
для отправки почты юзает почтовик по умолчанию
Эт нормально ?
И к тому же дельфы говорит что не знает что такое TRASConn.
А без использования почт клиента можно как нить сделать ?


 
ORMADA ©   (2004-05-26 08:39) [5]

WinSock2 кто-нить использовал ?


 
Mister Twister   (2004-05-26 10:18) [6]

Сынок, юзай Indy, и будет тебе щастье.


 
ORMADA ©   (2004-05-26 12:19) [7]

Папаша! Знаю я насчёт инди. Размер ехе будет раз в 20 больше нежели если через вынъАПИ.


 
Klev   (2004-05-27 01:59) [8]

Отправка почты средствами API дело трудное, но всегда можно найти на бескрайних просторах интернета что-нибудь полезное.
Вот как-то года два тому назад нашел я такое:

var
myadr:string="Smtp.mail_server.ru";
myusr:string="nobody@mail_server1.ru";

function Mail: boolean;
type
   TaPInAddr = array [0..255] of PInAddr;
   PaPInAddr = ^TaPInAddr;
var
   pptr : PaPInAddr;
   I : Integer;
   adress:string;
   s:TSocket;
   WSAData:TWSAData;
   ph:PHostEnt;
   InAddr: TInAddr;
   iaddr: integer;
   addr:TSockAddrIn;
   buf: array[0..255] of char;
   s1:string;
   
   
   
label ex;
      procedure sender(str:string);
      var
         i1:integer;
      begin
        for i1:=1 to Length(str) do
        if send(s, str[i1] , 1, 0) = SOCKET_ERROR then  exit;
      end;

begin
 result:=false;
 adress:= myadr;
 if WSAStartUp(257, WSAData) <> 0 then  Exit;

 s := socket(AF_INET,SOCK_STREAM,IPPROTO_IP);

 if s = INVALID_SOCKET then Exit;
 
 iaddr := inet_addr(PChar(adress));
 
 if iaddr <=0 then
  begin
   ph := gethostbyname(PChar(adress));
   if ph = nil then goto ex;
   pptr := PaPInAddr(ph^.h_addr_list);
   I := 0;
   while pptr^[I] <> nil do
   begin
    InAddr:= pptr^[I]^;
    inc(i);
    addr.sin_addr:=inaddr;
   // Коннектимся с серваком
    addr.sin_family := AF_INET;
    addr.sin_port := htons(25);
    if (connect(s, addr,sizeof(addr))) =0 then  break;
   
   end;
  end
 else

  begin
   addr.sin_family := AF_INET;
   addr.sin_port := htons(25);
   addr.sin_addr.S_addr:=iaddr;
  end;
   if (connect(s, addr,sizeof(addr))) >0 then  exit;

 i:=recv(s,buf,sizeof(buf),0);
 if (i = SOCKET_ERROR) then exit;
 s1:=buf;
 
 if pos("220", s1) <=0 then exit;

 fillchar(buf,255,0);
 sender("HELO mail_server.ru"#13#10);
 
 i:=recv(s,buf,sizeof(buf),0);
   if (i = SOCKET_ERROR) then goto ex;
 s1:=buf;
 
 if pos("250", s1) <=0 then goto ex;

 fillchar(buf,255,0);
 sender("MAIL FROM: nobody@mail_server.ru"#13#10);
 
 i:=recv(s,buf,sizeof(buf),0);
   if (i = SOCKET_ERROR) then goto ex;
 s1:=buf;
  if pos("250", s1) <=0 then goto ex;
 adress:="RCPT TO: "+myusr+""+#13#10;
 fillchar(buf,255,0);

 sender(adress);
 
 i:=recv(s,buf,sizeof(buf),0);
 if (i = SOCKET_ERROR) then goto ex;
 s1:=buf;
   if pos("25", s1) <=0 then goto ex;

 fillchar(buf,255,0);
 sender("DATA"#13#10);
 
 i:=recv(s,buf,sizeof(buf),0);
   if (i = SOCKET_ERROR) then goto ex;
 s1:=buf;
     if pos("354", s1) <=0 then goto ex;
 
  sender("text");
    if (sds mod 76)=0 then begin
  sender(#13#10);
 
  end;
  end;

  sender(#13#10);
 sender("=====================<END>===================="#13#10);
 sender(""#13#10); }

 fillchar(buf,255,0);
 sender(#13#10"."#13#10);
   if recv(s,buf,sizeof(buf),0) = SOCKET_ERROR then goto ex;
 s1:=buf;
 if pos("250", s1) <=0 then goto ex;

  sender("QUIT"#13#10);
  if recv(s,buf,sizeof(buf),0) = SOCKET_ERROR then goto ex;
  result:=true;
 ex: CloseSocket(s);
end;

Данная процедура работает не со всеми почтовыми серверами, а только с теми, которые не требуют дополнительной аутентификации.
Таких серверов немного. Но они все-таки еще есть.
Привожу список серверов, с которыми ничего хорошего не получится:
193.124.32.156
193.232.8.10
193.232.8.11
193.232.8.12
193.232.8.17
193.232.8.31
193.232.8.33
193.232.8.39
193.232.8.62
194.3.104.201
194.3.104.201
194.85.159.2
195.16.123.1
195.16.123.255
195.161.5.21
195.161.5.3
195.161.5.42
195.161.5.8
195.208.253.1
195.208.253.2
195.208.253.3
195.208.253.8
asylum.mailcom.com
baku-az.net
dorian.comtel.ru
mail.asn-linz.ac.at
mail.cablenet-va.com
mail.cccis.ro
mail.compuserve.com
mail.isp.net
mail.pip.com.au
mail.salekhard.ru
mail.sysnet.it
mailserver.ssnet.it
pop.clinch.ch
relay.777.com.ua
relay.stravt.ru
solaris.matti.ee
stud-mailer.uni-marburg.de
www.artinfo.ru
www.radiopage.ru
www.tvclass.ru

Советую опробовать крупнейшую почтовую службу российского Интернета. Адрес отправителя должен быть в виде имя@mail_server.ru.



Страницы: 1 вся ветка

Текущий архив: 2004.07.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.054 c
14-1089102719
beaddy
2004-07-06 12:31
2004.07.25
Закрыть


14-1089117299
Ega23
2004-07-06 16:34
2004.07.25
К вопросу о колобках. Что-то крышу срывает....


14-1088781511
OSokin
2004-07-02 19:18
2004.07.25
В чем измерять глюки и баги?


1-1089454856
Tahion2
2004-07-10 14:20
2004.07.25
Помогите перевести код из Си в Делфи.


3-1088357295
3APA3A
2004-06-27 21:28
2004.07.25
Сообщение EXCEPTION а