Существует ли программа скрытно отправляющая 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.
Юзай idsmtp и будет тебе счастье P.S я выкладывал в теме по помощи в делфи исходник отправки текста на почту
сенкс но вообще то исходный код(на дельфи, си или спп) и да, почему не работает код из моего поста на дельфи? Юзай idsmtp и будет тебе счастье я дельфи не знаю, просто понадобилось)
пример отправки мыла на 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.
поподробней если можно) Я всетаки простой юзер, не знаю как и где WinSock компилить (и нужно ли) и.т.п.
Маленький ньюанс, я прекрасно понимаю, что ты новичок, я понимаю, что ты хочешь научиться кодить, НО! начни с азов! это проще и компилить не надо просто сохрани в файл с нужным расширением и будет тебе счастье... Для начала нужно понять логику, иначе весь твой софт будет ни чем иным кроме как копи-паст ИМХО.
за пример сенкс. но у меня сейчас первая цель это прога скрытно отправляющая e-mail, для дела понадобилась)
Используй поиск по форуму. Вот, думаю тебе пригодится. https://forum.antichat.ru/threadedpost1672211.html#post1672211