2012-04-23 26 views
5

Delphi 7 mit Indy 10.5.8.0.Delphi und Indy mit SSL

Ich entschuldige mich, wenn dies zuvor Fragen wiederholt, aber ich kann dieses Problem nicht lösen.

Ich sende HTML-E-Mails mit eingebetteten Bildern mit dem Indy TidMessageBuilderHTML, um meine HTML-E-Mails zu erstellen. Das ist sehr cool und funktioniert soweit perfekt.

Mein Problem ist jetzt für SMTP-Server, die SSL/TLS-Authentifizierung erfordern. Ich hatte so viele Probleme mit den OPENSSL DLL-Dateien und jetzt scheint es, die 32-Bit-Versionen laufen nicht auf 64-Bit usw. Ich möchte eine Abhilfe, die die Verwendung der DLL-Dateien vermeidet. (Und vorzugsweise muss ich es für eine einzige exe. Anwendung behalten).

Meine Frage dann: Ich möchte Indy V10 verwenden, wie es ist, ohne die OPENSL-DLLs zu versenden. Gibt es eine Möglichkeit, dies zu tun? Gibt es keine Delphi SSL-Bibliotheken, die Indy ssl (TIdSSLIOHandlerSocketOpenSSL) unterstützen?

Auch ich bin offen für andere Vorschläge, die meine HTML-E-Mails mit eingebetteten Bildern erleichtern werden. Vielen Dank.

+0

Wenn Sie "alles" in Ihre exe wollen, müssen Sie die DLLs einbetten, bevor alle anderen Einheiten in der uses-Klausel Ihrer dpr-Datei eine Einheit hinzufügen, deren einziger Zweck es ist, die DLLs aus der Anwendung bei der Initialisierung zu extrahieren . Es scheint seltsam, dass Ihre DLLs nicht auf x64 funktionieren ... – ComputerSaysNo

+0

Die statische Verknüpfung von SSL scheint etwas zu sein, was niemand tut, wahrscheinlich weil die Abhängigkeiten der C-Bibliothek zu komplex sind. Das Einbetten und Laden der SSL-DLL scheint die einzige Option zu sein, und ja, eine 32-Bit-DLL funktioniert in 64-Bit-Fenstern. Warum nicht? –

+2

Nur eine Randnotiz. Sie können 'Indy' kompatible' OpenSSL' Bibliotheken von ['here'] (http://indy.fulgan.com/SSL/) bekommen. Dort finden Sie auch die 64-Bit-Versionen der Bibliotheken. – TLama

Antwort

2

Sie haben nach Bibliotheken gefragt, die die TIdSSLIOHandlerSocketOpenSSL-Klasse unterstützen, aber das ist genau die Klasse, die die externen DLLs in ihrer TIdSSLIOHandlerSocketOpenSSL.StartSSL-Methode benötigt.

Die einfachste Lösung ist die DLLs (32-Bit oder 64-Bit-Version) zu liefern und zur Laufzeit die DLLs-Präsenz zu prüfen, bevor Sie versuchen, Ihre "SendMail" -Funktion aufzurufen, damit Sie Ihren Benutzern verständliche Fehlermeldungen präsentieren können. zeigt genau an, welche Dateien von Ihrer Anwendung erwartet werden.

Verwandte Themen