2012-04-23 34 views
5

Delphi 7 con Indy 10.5.8.0.Delphi e Indy con SSL

Mi scuso se si tratta di domande poste in precedenza, ma non riesco a risolvere questo problema.

Sto inviando email HTML con immagini incorporate usando Indy TidMessageBuilderHTML per costruire le mie email html. Questo è molto bello e funziona perfettamente finora.

Il mio problema ora è quello di soddisfare i server SMTP che richiedono l'autenticazione SSL/TLS. Ho avuto così tanti problemi con i file OPENSSL DLL e ora sembra che le versioni a 32 bit non girino su 64 bit, ecc. Voglio una soluzione che eviti di usare i file DLL. (E preferibilmente ho bisogno di tenerlo single exe.)

La mia domanda è: voglio usare Indy V10 così com'è, senza dover spedire le dll di OPENSSL. C'è un modo per fare questo? Non sono disponibili librerie SSL delphi che supportano Indy ssl (TIdSSLIOHandlerSocketOpenSSL)?

Inoltre, sono aperto ad altri suggerimenti che faciliteranno le mie e-mail html con immagini incorporate. Grazie.

+0

se si desidera "tutto" nel proprio exe, è necessario incorporare le dll, prima di tutte le altre unità nella clausola uses del file dpr, aggiungere un'unità il cui unico scopo è estrarre le dll dall'applicazione durante l'inizializzazione . Sembra strano che le tue DLL non funzionino su x64 ... – ComputerSaysNo

+0

Il collegamento statico di SSL sembra essere qualcosa che nessuno fa, probabilmente perché le dipendenze della libreria C sono troppo complesse. Incorporare e quindi caricare la dll SSL sembra essere l'unica opzione, e sì, una DLL a 32 bit funzionerà su finestre a 64 bit. Perché no? –

+2

Solo un sidenote. Puoi ottenere librerie 'OpenSSL' compatibili con' Indy' da ['here'] (http://indy.fulgan.com/SSL/). Lì troverai anche le versioni a 64 bit delle librerie. – TLama

risposta

2

Hai chiesto informazioni sulle librerie che supportano la classe TIdSSLIOHandlerSocketOpenSSL, ma questa è esattamente la classe che richiede le DLL esterne, nel suo metodo TIdSSLIOHandlerSocketOpenSSL.StartSSL.

La soluzione più semplice è spedire le DLL (versione a 32 bit o 64 bit) e verificare in fase di esecuzione la presenza delle DLL prima di tentare di richiamare la funzione "SendMail", in questo modo è possibile presentare agli utenti messaggi di errore più comprensibili, indica esattamente quali file dovrebbero essere trovati dall'applicazione.

Problemi correlati