Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2002.08.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
1-95757
greenrul
2002-08-16 17:41
2002.08.29
Рисунок на канве не обновляется


14-95942
Александр
2002-08-02 12:48
2002.08.29
Совместимость ПО с Windows XP


1-95826
Voldemar
2002-08-16 02:26
2002.08.29
Автоподгонка размера ячейки в Excel


8-95913
Николай.
2002-04-21 17:28
2002.08.29
Проигрывание MP3 файлов


14-95946
Cola
2002-07-27 21:47
2002.08.29
Как ИМЕННО беспла зарегестрировать EhLib.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский