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

Вниз

Отправка почты из dll   Найти похожие ветки 

 
yk ©   (2005-12-20 11:01) [0]

library smtp;
уважаемые мастера!
хочу отправить почту из dll.
Для отправки почты использую Indy, которые лежат в dll
uses
 ShareMem,
 SysUtils,
 Classes,
 IdBaseComponent, IdComponent,
 IdRawBase,IdRawClient,
 IdIcmpClient, IdMessage,
 IdTCPConnection,IdTCPClient,
 IdMessageClient, IdSMTP, Forms,
 Unit1 in "Unit1.pas" {Form1};

{$R *.res}

function SendMail(MailAddress:string;MailText:TStrings):string;cdecl;export;

begin
Form1:=TForm1.Create(Application);
  with Form1 do begin
try
Result:="no";
  IdSMTP.Host:="myhost";
  IdSmTP.Port:=25;
  IdSmtp.Username:="myuser";
  Idsmtp.Password:="123";
  idsmtp.AuthenticationType:=atnone;
  IdSMTP.Connect(5000);
  Msg.Clear;
  Msg.Clear;
  Msg.Subject:="Snabg";
  Msg.From.Address:="myuser@myhost;
   Msg.Recipients.EMailAddresses:="";
   Msg.Recipients.EMailAddresses:=MailAddress;
   Msg.Body.Clear;
   Msg.Body.Text:=MAilText.Text;
   IdSMTP.Send(msg);
   IdSMTP.Disconnect;
Form1.Free;
 except
  begin
   Result:="error";
  Form1.Free;
  end;
           end;

end;
end;

exports
  SendMail;

begin
isMultiThread:=True;
end.

-----------------
....
function SendMail(MailAddress:string;MailText:TStrings):string;cdecl; external "smtp";

procedure TForm1.Button1Click(Sender: TObject);
var
str:string;
begin
 Str := SendMail("eyolkina@polygon.local",Memo1.Lines);
 ShowMessage(Str);

end;

проблема: почта отправляется. Но когда хочу закрыть программу - выскакивает access violation. предположительно изза неправильной работы с памятью в dll.
Соответственно подключить эту библиоткеу как udf к IB не могу.
Подскажите где ошибка


 
alex_*** ©   (2005-12-20 11:04) [1]

парамерами передавай PChar или собери с runtime пакетами или пользуй sharemem


 
alex_*** ©   (2005-12-20 11:05) [2]

совет: используй TForm по назначению, а не в качестве DataModule


 
yk ©   (2005-12-20 11:36) [3]

странно.
но ошибка вылезает даже когда

uses
 ShareMem,
 SysUtils,
 Classes,
 IdBaseComponent,
 IdComponent,
 IdRawBase,
 IdRawClient,
 IdIcmpClient,
 IdMessage,
 IdTCPConnection,
 IdTCPClient,
 IdMessageClient,
 IdSMTP,
 Forms,
 Unit1 in "Unit1.pas" {Form1};

function SendMail(MailAddress:pcHAR;MailText:pcHAR):pcHAR;cdecl;export;
begin
Result:="no";
end;


 
umbra ©   (2005-12-20 11:40) [4]

ShareMem должен быть первым в uses модуля проекта (*.dpr)


 
yk ©   (2005-12-20 11:46) [5]


> umbra ©   (20.12.05 11:40) [4]

спасибо - ступила :))



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

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

Наверх




Память: 0.47 MB
Время: 0.023 c
14-1134497873
Yerlan Dossanov
2005-12-13 21:17
2006.01.08
Объект или субъект


2-1135153839
nirvana
2005-12-21 11:30
2006.01.08
Защита базы данных


14-1133450740
Kerk
2005-12-01 18:25
2006.01.08
Приглашение в orkut


14-1134385970
lookin
2005-12-12 14:12
2006.01.08
Печать фотографий


14-1134651399
Виталий Панасенко
2005-12-15 15:56
2006.01.08
Без коментариев