Показать сообщение отдельно

Помогите с отправкой письма!
  #666  
Старый 22.10.2007, 20:51
<Zodiac>
Новичок
Регистрация: 20.10.2007
Сообщений: 5
Провел на форуме:
6515

Репутация: 0
По умолчанию Помогите с отправкой письма!

Проблема состоит не в шифровке данных с помощью base64. Нужен код на отправку письма с аттачментом через WinSock. Те примеры, что в инете валяются не работают

Вот вариант, который я использую. Посмотрите пожалуйста и скажите в чем трабл (как сделать так, чтобы Pupkin2 остался довольным ):

Код:
uses WinSock

....

function LookupName(host: string): TInAddr;
var
  HostEnt: PHostEnt;
  InAddr: TInAddr;
begin
  HostEnt := gethostbyname(PChar(host));
  FillChar(InAddr, SizeOf(InAddr), 0);
  if HostEnt <> nil then
    begin
      with InAddr, HostEnt^ do
        begin
          S_un_b.s_b1 := h_addr^[0];
          S_un_b.s_b2 := h_addr^[1];
          S_un_b.s_b3 := h_addr^[2];
          S_un_b.s_b4 := h_addr^[3];
        end;
    end;
  Result := InAddr;
end;

function GetComputerNetName: string;
var
  buffer: array[0..255] of char;
  size: dword;
begin
  size := 256;
  if GetComputerName(buffer, size) then
    Result := buffer
  else
    Result := ''
end;

procedure SMTPSendString(MailSocket:TSocket;Str:string);
var
  Buffer:Array[0..255] of char;
begin
  StrPCopy(Buffer,Str);
  Send(MailSocket,Buffer,length(Str),0);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  WSA:TWSAData;
  MailSocket:TSocket;
  SMTPServer:TSockAddr;
begin
  WSAStartup(MAKEWORD(1,0),WSA);
  MailSocket:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP  );
  ZeroMemory(@SMTPServer,SizeOf(SMTPServer));
  SMTPServer.sin_family:=AF_INET;
  SMTPServer.sin_port:=htons(25);
  SMTPServer.sin_addr:=LookupName('smtp.mail.ru');
  if Connect(MailSocket,SMTPServer,SizeOf(SMTPServer))=  0 then
    begin
      SMTPSendString(mailsocket,'HELO '+ GetComputerNetName + CTRLF);
      SMTPSendString(mailsocket,'AUTH LOGIN ' + CTRLF + b64encode('Pupkin1') + CTRLF + b64encode('password') + CTRLF);
      SMTPSendString(mailsocket,'MAIL FROM:' + 'Pupkin1@mail.ru' + CTRLF + 'RCPT TO:' + 'Pupkin2@mail.ru' + CTRLF);
      SMTPSendString(mailsocket,'DATA' + CTRLF + 'From: "' + 'Pupkin1' + '" <' + 'Pupkin1@mail.ru' + '>' + CTRLF + 'To: "' + 'Pupkin2' + '" <' + 'Pupkin2@mail.ru' + '>' + CTRLF + 'Subject: ' + 'TESTING' + CTRLF);
      SMTPSendString(mailsocket,'DONE!!!!'+CTRLF);
      SMTPSendString(mailsocket,CTRLF+'.'+CTRLF+CTRLF+'QUIT');
    end
  else
    ShowMessage('ERROR');
  CloseSocket(MailSocket);
  WSACleanup;
end;

Последний раз редактировалось <Zodiac>; 23.10.2007 в 00:07..
 
Ответить с цитированием