Delphi с инди

Я только начал использовать indy10 (сегодня) в Delphi 2010, прочитав все, что мне удавалось заставить его работать, я могу отправлять электронные письма с помощью 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, теперь я сделал много вещей, чтобы она работала, много чего скачал и пробовал много другого, теперь я не знаю, где эти библиотеки и как их получить, и я хотел бы знать, как загрузить их с установкой, так что мой установщик идет со всем необходимым.

Заранее спасибо.


person Edgar Holguin    schedule 05.09.2012    source источник
comment
Статья в EDN с описанием того, какие библиотеки DLL развертывать: edn.embarcadero.com/article/31279   -  person Sam M    schedule 06.09.2012


Ответы (1)


Убедитесь, что у вас есть библиотеки DLL OpenSSL на целевых машинах, желательно в папке установки вашего приложения. Если вы по-прежнему получаете сообщение об ошибке, функция Indy WhichFailedToLoad() в модуле IdSSLOpenSSLHeaders может сказать вам, почему она не может загрузить библиотеки DLL OpenSSL. Что касается самих библиотек DLL, вы можете загрузить Indy-совместимые копии с зеркала Fulgan.

Кстати, вам не нужно устанавливать свойства IOHandler Destination, Host или Port. Метод Connect() сделает это за вас.

person Remy Lebeau    schedule 06.09.2012
comment
спасибо, мне потребовалось некоторое время, чтобы установить правильный OpenSSL на колени, но мне удалось это сделать - person Edgar Holguin; 06.09.2012