1

我刚开始在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;

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

无法加载 SSL 库,现在,我做了很多事情让它工作,下载了很多东西并尝试了很多其他东西,现在我不知道这些库在哪里以及如何检索它们,我想知道一种加载方式它们与安装一起使用,因此我的安装程序可以满足所需的一切。

提前致谢。

4

1 回答 1

5

确保您的目标机器上有 OpenSSL DLL,最好是在您的应用程序的安装文件夹中。如果您仍然收到错误,单元WhichFailedToLoad()中的 Indy 函数IdSSLOpenSSLHeaders可以告诉您为什么它无法加载 OpenSSL DLL。至于 DLL 本身,您可以从 Indy 的Fulgan mirror下载与 Indy 兼容的副本。

附带说明一下,您不需要设置 IOHandler 的DestinationHostPort属性。该Connect()方法将在内部为您处理。

于 2012-09-06T00:25:38.827 回答