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

Вниз

Как отправить файл на почту на чистом Delphi   Найти похожие ветки 

 
l.a_ ©   (2004-11-20 12:03) [0]

Помогите пожалуйста!!!!!!!!!!!!!!
С сетью работаю недавно! Как отправить файл на почту на чистом Delphi


 
Anatoly Podgoretsky ©   (2004-11-20 15:18) [1]

На чистом Дедьфи, тогда используй Инди


 
XProger ©   (2004-11-20 16:29) [2]

А если хочешь всё ручками, и чтобы весило мало - WinSock
и RFC по SMTP протоколу


 
DelphiN! ©   (2004-11-22 07:11) [3]

//Пример: SendMail("smtp.yandex.ru",25,"fromdelphin@yandex.ru","todelphin@yandex.ru","Tema_Soobshenia","Text soobshenia");

Uses WinSock;

...

Function SendMail(SMTP:String;Port:Integer;From,_To,Subject,Text:String):Boolean;
var
 wsadata:  TWSADATA;
 sin: TSockAddrIn;
 sock: TSocket;
 MySmtp : String;

 iaddr: Integer;
 buf: array[0..255] of char;

//   Процедура посимвольной отправки данных
procedure Mys(str: String);
var
 I: Integer;
begin
  for I:=1 to Length(str) do if send(sock,str[I],1,0)=SOCKET_ERROR then exit;
end;

//Имя сервера в IP адрес
function HostToIP(name: string; var Ip: string): Boolean;
var
 wsdata : TWSAData;
 hostName : array [0..255] of char;
 hostEnt : PHostEnt;
 addr : PChar;
begin
 WSAStartup ($0101, wsdata);
 try
   gethostname (hostName, sizeof (hostName));
   StrPCopy(hostName, name);
   hostEnt := gethostbyname (hostName);
   if Assigned (hostEnt) then
     if Assigned (hostEnt^.h_addr_list) then begin
       addr := hostEnt^.h_addr_list^;
       if Assigned (addr) then begin
         IP := Format ("%d.%d.%d.%d", [byte (addr [0]),
         byte (addr [1]), byte (addr [2]), byte (addr [3])]);
         Result := True;
       end
       else
         Result := False;
     end
     else
       Result := False
   else begin
     Result := False;
   end;
 finally
   WSACleanup;
 end
end;

begin
 HostToIP(SMTP,MySmtp);

 //Инициализируем сокет для соединения сервером smtp.yandex.ru
 WSAStartUp(257, wsadata);
 sock:=socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
 sin.sin_family := AF_INET;
 htons(Port);
 sin.sin_port := htons(Port);
 iaddr:=inet_addr(PChar(MySmtp));
 sin.sin_addr.S_addr:=iaddr;
 //         Соединение
 connect(sock,sin,sizeof(sin));
 // Получим от сервера ответ
 recv(sock,buf,sizeof(buf),0);

 //         HELO SERVER
 // Запускаем процу посимвольной отправки строки
 Mys("HELO yandex.ru"+#13+#10);
 // Получим от сервера ответ
 recv(sock,buf,sizeof(buf),0);

 //         MAIL TO:
 Mys("MAIL FROM: "+_To+#13+#10);
 recv(sock,buf,sizeof(buf),0);

 //         RCPT TO:
 Mys("RCPT TO: "+_To+#13+#10);
 recv(sock,buf,sizeof(buf),0);

 //        DATA
 Mys("DATA"+#13+#10);
 recv(sock,buf,sizeof(buf),0);

 Text := "From:<"+From+">"+#13#10+"TO:<"+_To+">"+#13#10+"Subject:"+Subject+"_"+datetostr(date)+#13#10+"Content-Type: text/plain; charset="windows-1251""+#13#10+"X-Priority: 3"+#13#10+"X-Mailer: Ruki.sys"+#13#10+Text;

 //          Отправка информации
 Mys(Text+#13+#10);

 //           .
 Mys(#13+#10+"."+#13+#10);
 recv(sock,buf,sizeof(buf),0);

 //            QUIT
 Mys("QUIT"+#13+#10);
 recv(sock,buf,sizeof(buf),0);

 //Анализируем результат на ошибки
 if WSAGetLastError = 0 then
   Result := true
 else
   Result := false;

 //   Закрываем сокет
 closesocket(sock);

end;


 
DelphiN! ©   (2004-11-22 07:14) [4]


> [2] XProger ©   (20.11.04 16:29)


Чтобы файл послать смотри как это делается в RFC по SMTP


 
Rouse_ ©   (2004-11-22 22:25) [5]

> на чистом Delphi
;)))))
Ох, долго я так не смеялся ;)))
 IdSMTP1.QuickSend("кому", "по какой теме", "", "", "Чувак, тебе письмо...");



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

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

Наверх




Память: 0.48 MB
Время: 0.049 c
4-1103632703
Artem_
2004-12-21 15:38
2005.02.06
Загрузка процессора


1-1106255785
gyry-9
2005-01-21 00:16
2005.02.06
Уменшение числа до одного розряда


1-1106417243
InTr
2005-01-22 21:07
2005.02.06
Поле ввода/редактирования, подобное вордовому


3-1104826284
sergg
2005-01-04 11:11
2005.02.06
Очистка таблицы ACCESS 2000


1-1106074983
D-alone
2005-01-18 22:03
2005.02.06
Быстрое умножение булевых матриц