Форум: "Сети";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
ВнизКак отправить файл на почту на чистом 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c