Главная страница
    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.45 MB
Время: 0.007 c
2-1135054933
Новенькая
2005-12-20 08:02
2006.01.08
SaveDialog


14-1134661370
Bogdan1024
2005-12-15 18:42
2006.01.08
Дуглас Коупленд "Рабы Майкрософта"


1-1134038734
Black Fox
2005-12-08 13:45
2006.01.08
Delphi + Open Office


6-1127739011
NikNet
2005-09-26 16:50
2006.01.08
Есть ли компонент (Два компонента) для перевачи файлов по сети?


2-1134935383
x-steff
2005-12-18 22:49
2006.01.08
Проблема с БД в Дельфи





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