Скрытая отправка сообщений из файла

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Maxxxxxxzzz, 19 Aug 2010.

  1. Maxxxxxxzzz

    Maxxxxxxzzz New Member

    Joined:
    19 Aug 2010
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Существует ли программа скрытно отправляющая e-mail с текстом из определенного файла лежащего с ней в одном каталоге?
    Если можно то ссылку или исходный код(на дельфи, си или спп)

    Нашел вот такую программу на дельфи
    Но неработает

    Code:
    program Project1;     {$APPTYPE CONSOLE}     uses IdSMTP, IdMessage;     {$R *.res}     var smtp : TIdSMTP;      msg  : TIdMessage;     begin    smtp := TIdSMTP.Create(nil);       smtp.AuthenticationType := atLogin;    smtp.Username := '[email protected]';    smtp.Password := 'ChangeMe';    smtp.Host     := 'smtp.mail.ru';    smtp.Port     := 25;       smtp.Connect;       if smtp.Authenticate then    begin      msg := TIdMessage.Create(nil);         msg.Subject := 'Subject';      msg.Body.Add('Mail body.');      msg.From.Text := '[email protected]';      msg.Recipients.EMailAddresses := '[email protected]';         smtp.Send(msg);      smtp.Disconnect;         msg.Free;    end;    smtp.Free;  end.
     
  2. z0mbyak

    z0mbyak Active Member

    Joined:
    10 Apr 2010
    Messages:
    537
    Likes Received:
    200
    Reputations:
    293
    Пример на js

    PowerShell

    VBS/WSH

    Еще выкладывать?
     
  3. 0pTik

    0pTik Banned

    Joined:
    18 Jul 2010
    Messages:
    240
    Likes Received:
    85
    Reputations:
    17
    Юзай idsmtp и будет тебе счастье

    P.S я выкладывал в теме по помощи в делфи исходник отправки текста на почту
     
  4. Maxxxxxxzzz

    Maxxxxxxzzz New Member

    Joined:
    19 Aug 2010
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    сенкс но вообще то
    исходный код(на дельфи, си или спп)

    и да, почему не работает код из моего поста на дельфи?


    Юзай idsmtp и будет тебе счастье

    я дельфи не знаю, просто понадобилось)
     
    #4 Maxxxxxxzzz, 19 Aug 2010
    Last edited: 19 Aug 2010
  5. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    пример отправки мыла на WinSock

    Code:
    unit smtp;
    
    interface
    
    uses
      Windows, WinSock2, Encoders;
    
    
    const
      CL = #13#10;
    
    
    function SendMail(Server: String; Port: Integer; const User, Pass,
      From,SentTo,Tema,Body: String): Boolean;
    
    implementation
    
    
    function StrToAddr(Server: String; var InAddr: TInAddr): Integer;
    var
      HostEnt: PHostEnt;
    begin
      Result:= -1;
      HostEnt:= GetHostByName(PChar(Server));
      FillChar(InAddr, SizeOf(InAddr), 0);
      if (HostEnt = nil) then Exit;
      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;
      Result:= 0;
    end;
    
    function SendText(Sock: TSocket; S: String): Integer;
    var
      Buff: array[0..1023] of Char;
      iSize, i: Integer;
    begin
      Result:=0;
      S:= S + #13#10;
      while (Length(S)>0) do
        begin
          iSize:= Length(S);
          if ( iSize > SizeOf(Buff) ) then iSize:= SizeOf(Buff);
          FillChar(Buff, SizeOf(Buff), 0);
          CopyMemory(@Buff, PChar(S), iSize);
          Delete(S, 1, iSize);
          i:= Send(Sock, Buff, iSize, 0);
          if i = SOCKET_ERROR then Break;
          Result:= Result + i;
        end;
    end;
    
    function RecvData(Sock: TSocket; accept: string): Boolean;
    var
      Buff: array[1..255] of Char;
    begin
      Result:= (recv(Sock, buff, SizeOf(buff), 0) = SOCKET_ERROR) or (Copy(Buff, 1, 3) = accept);
    end;
    
    
    function GenerateBoundary: String;
    var
      N, X, StrLen: integer;
    const
      StrTable: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
    begin
      SetLength(result, 14);
      StrLen := Length(StrTable);
      N := 0;
      while N < 14 do begin
        X:= Random(StrLen) + 1;
        if (pos(StrTable[X], result) = 0) then begin
          inc(N);
          Result[N]:= StrTable[X];
        end;
      end;
    end;
    
    function GetLocalHost: string;
    var
     _buff : array [0..255] of char;
    begin
     if gethostname(_buff, 255) = 0 then
      Result:= (_buff)
     else
      Result:= '';
    end;
    
    function SendMail(Server: String; Port: Integer; const User, Pass,
      From,SentTo,Tema,Body: String): Boolean;
    var
      Boundary: String;
      wData: TWSAData;
      SockSMTP: TSocket;
      SockAddr: TSockAddrIn;
    begin
      Result:= False;
      if (WSAStartup(MakeWord(2, 2), wData)<>0) then Exit;
      try
      Boundary:= GenerateBoundary;
    //===========================================================
    // Connect to SMTP server and send message
    //============================
        SockAddr.sin_family:= AF_INET;
        if (StrToAddr(Server, SockAddr.sin_addr)=0) then begin
          SockAddr.sin_port:= HToNS(Port);
          FillChar(SockAddr.sin_zero, SizeOf(SockAddr.sin_zero), 0);
          SockSMTP:= Socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
          if SockSMTP <> INVALID_SOCKET then begin
            if (Connect(SockSMTP, @SockAddr, Sizeof(SockAddr))=0) then begin
              if RecvData(SockSMTP,'220') then begin
                SendText(SockSMTP,'EHLO ' + GetLocalHost); { HELO }
                if RecvData(SockSMTP,'250') then begin
                  SendText(SockSMTP,'AUTH PLAIN ' + Base64Encode(User+#0+User+#0+Pass));
                  if RecvData(SockSMTP,'235') then begin
                    SendText(SockSMTP,'MAIL FROM:' + From);
                    if RecvData(SockSMTP,'250') then begin
                      SendText(SockSMTP,'RCPT TO:' + SentTo);
                      if RecvData(SockSMTP,'250') then begin
                        SendText(SockSMTP,'DATA');
                        if RecvData(SockSMTP,'354') then begin
                          SendText(SockSMTP,'MIME-Version: 1.0');
                          SendText(SockSMTP,'Content-Transfer-Encoding: binary');
                          SendText(SockSMTP,'Content-Type: multipart/mixed; boundary="----------' + Boundary + '"');
                          SendText(SockSMTP,'Subject: ' + Tema);
                          SendText(SockSMTP,'To: ' + SentTo);
                          SendText(SockSMTP,'From: ' + From);
                          SendText(SockSMTP,'');
                          SendText(SockSMTP,'This is a multi-part message in MIME format.');
                          SendText(SockSMTP,'');
                          SendText(SockSMTP,'------------' + Boundary);
                          SendText(SockSMTP,'MIME-Version: 1.0');
                          SendText(SockSMTP,'Content-Disposition: inline');
                          SendText(SockSMTP,'Content-Length: ' + InStr(Length(Body)));
                          SendText(SockSMTP,'Content-Transfer-Encoding: binary');
                          SendText(SockSMTP,'Content-Type: text/plain; charset="windows-1251"');
                          SendText(SockSMTP,'');
                          SendText(SockSMTP,Body);
                          SendText(SockSMTP, CL + '.' + CL);
                          SendText(SockSMTP, 'QUIT');
                          Result:= True;
                        end;
                      end;
                    end;
                  end;
                end;
              end;
            end; { end connect }
            CloseSocket(SockSMTP);
          end;
        end; { end StrToAddr }
      finally
        WSACleanup;
      end;
    end;
    
    end.
     
  6. Maxxxxxxzzz

    Maxxxxxxzzz New Member

    Joined:
    19 Aug 2010
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    поподробней если можно)
    Я всетаки простой юзер, не знаю как и где WinSock компилить (и нужно ли) и.т.п.
     
  7. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    вот тут готовый пример
     
  8. z0mbyak

    z0mbyak Active Member

    Joined:
    10 Apr 2010
    Messages:
    537
    Likes Received:
    200
    Reputations:
    293
    Маленький ньюанс, я прекрасно понимаю, что ты новичок, я понимаю, что ты хочешь научиться кодить, НО! начни с азов! это проще и компилить не надо:) просто сохрани в файл с нужным расширением и будет тебе счастье...

    Для начала нужно понять логику, иначе весь твой софт будет ни чем иным кроме как копи-паст
    ИМХО.
     
  9. Linkus

    Linkus Member

    Joined:
    20 Dec 2008
    Messages:
    168
    Likes Received:
    15
    Reputations:
    -1
    Code:
            
                        end;
                      end;
                    end;
                  end;
                end;
              end;
            end; { end connect }
    красивый код))))
     
    1 person likes this.
  10. Irdis

    Irdis Elder - Старейшина

    Joined:
    6 Feb 2006
    Messages:
    248
    Likes Received:
    52
    Reputations:
    3
    полезный комментарий!
    Ребята инвертируйте if'ы, ваш код станет более красивым и читабельным!
     
  11. Maxxxxxxzzz

    Maxxxxxxzzz New Member

    Joined:
    19 Aug 2010
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    за пример сенкс. но у меня сейчас первая цель это прога скрытно отправляющая e-mail, для дела понадобилась)
     
  12. =Zeus=

    =Zeus= Member

    Joined:
    10 Aug 2009
    Messages:
    213
    Likes Received:
    54
    Reputations:
    5
    Используй поиск по форуму. Вот, думаю тебе пригодится.
    https://forum.antichat.ru/threadedpost1672211.html#post1672211