德尔福与indy

Edg*_*uin 1 delphi delphi-2010 indy10

我刚刚开始在Delphi 2010中使用indy10(今天),在阅读了每一个我设法使其工作后,我可以使用gmail发送电子邮件,它在我的计算机上工作正常,但是当我在我的笔记本电脑上安装应用程序(用于测试)时,它没有发送电子邮件,我的应用程序停止工作,我是否必须在我的笔记本电脑上安装其他东西或如何让它在我安装我的程序的每台计算机上工作,到目前为止我必须在6台不同的计算机上安装它,一些使用Windows XP和一些Windows 7,我希望有一种方法可以使它成为多平台或其他东西.

这是我的代码:

procedure SendIndyMail;
begin

    Form_final.IdSMTP1 .IOHandler := Form_final.IdSSLIOHandlerSocketOpenSSL1;
    Form_final.IdSMTP1.Host:= 'smtp.gmail.com';
    Form_final.IdSMTP1.Password:= 'xxxxxx';
    Form_final.IdSMTP1.Port := 587;
    Form_final.IdSMTP1.UseTLS := utUseExplicitTLS;
    Form_final.IdSMTP1.Username := 'xxxxxx';

    Form_final.IdSSLIOHandlerSocketOpenSSL1.Destination := 'smtp.gmail.com:587';
    Form_final.IdSSLIOHandlerSocketOpenSSL1.Host := 'smtp.gmail.com';
    Form_final.IdSSLIOHandlerSocketOpenSSL1.Port := 587;
    Form_final.IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1;
    Form_final.IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode := sslmUnassigned;
    Form_final.IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyMode := [];
    Form_final.IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyDepth := 0;

    Form_final.IdMessage1.Subject:=conect.Q_selec_info_generalDescripcion.Text+' '+DateToStr(Date);
    Form_final.IdMessage1.Recipients.EMailAddresses:=conect.Q_config_seleccorreo.Text;
    TIdAttachmentFile.Create(Form_final.IdMessage1.MessageParts, conect.Q_config_selecfolder.Text+'\reporte_'+FormatDateTime('dddd d of mmmm yyyy', Date)+' Inventario '+Form_inventario.Edit_id_inventario.Text+'.pdf');

    Form_final.IdSMTP1.Connect;
    Form_final.IdSMTP1.Send(Form_final.IdMessage1);
    Form_final.IdSMTP1.Disconnect;
end;
Run Code Online (Sandbox Code Playgroud)

我在笔记本电脑上运行了proyect,它说:

无法加载SSL库,现在,我做了很多事情让它工作,下载了很多东西并尝试了很多其他的东西,现在我不知道那些库是什么以及如何检索它们,我想知道一种加载方法他们与安装,所以我的安装程序与所需的一切.

提前致谢.

Rem*_*eau 5

确保目标计算机上有OpenSSL DLL,最好是在应用程序的安装文件夹中.如果你仍然得到错误,Indy WhichFailedToLoad()IdSSLOpenSSLHeaders单元中的功能可以告诉你为什么它无法加载OpenSSL DLL.至于DLL本身,你可以从Indy的Fulgan镜像下载Indy兼容的副本.

在一个侧面说明,你并不需要设置IOHandler的Destination,HostPort性质.该Connect()方法将在内部为您处理.