2012-04-23 20 views
5

डेल्फी 7 इंडी 10.5.8.0 के साथ डेल्फी और इंडी।एसएसएल

मैं क्षमा चाहता हूं कि यह पहले पूछे जाने वाले प्रश्नों को दोबारा शुरू कर रहा है, लेकिन मैं इस समस्या को हल नहीं कर सकता।

मैं अपने एचटीएमएल ईमेल बनाने के लिए इंडी टिडमेसेजबिल्डर HTML का उपयोग करके एम्बेडेड छवियों के साथ एचटीएमएल ईमेल भेज रहा हूं। यह बहुत अच्छा है और अब तक पूरी तरह से काम करता है।

मेरी समस्या अब एसएमटीपी सर्वरों को पूरा करना है जिसके लिए एसएसएल/टीएलएस प्रमाणीकरण की आवश्यकता है। मुझे OPENSSL DLL फ़ाइलों के साथ बहुत सी समस्याएं आई हैं और अब ऐसा लगता है कि 32 बिट संस्करण 64 बिट आदि पर नहीं चलते हैं। मुझे एक वर्कअराउंड चाहिए जो DLL फ़ाइलों का उपयोग करने से बचाता है। (और अधिमानतः मुझे इसे एक exe रखने की जरूरत है। आवेदन)।

मेरा प्रश्न तब है: मैं इंडी वी 10 का उपयोग करना चाहता हूं क्योंकि यह OPENSSL डीएल के जहाज के बिना है। क्या इसे करने का कोई तरीका है? क्या कोई उपलब्ध डेल्फी एसएसएल पुस्तकालय नहीं है जो इंडी एसएसएल (TIdSSLIOHandlerSocketOpenSSL) का समर्थन करता है?

इसके अलावा, मैं अन्य सुझावों के लिए खुला हूं जो एम्बेडेड छवियों के साथ मेरे एचटीएमएल ईमेल को सुविधाजनक बनाएगा। धन्यवाद।

+0

यदि आप अपने exe में "सबकुछ" चाहते हैं, तो आपको अपनी डीआरपी फ़ाइल के उपयोग खंड में अन्य सभी इकाइयों से पहले डीएलएस को एम्बेड करने की आवश्यकता है, एक इकाई जोड़ें कि इसका एकमात्र उद्देश्य प्रारंभिक पर आवेदन से डीएल निकालना है । ऐसा लगता है कि आपके डीएलएस x64 पर काम नहीं करते हैं ... – ComputerSaysNo

+0

एसएसएल की स्थैतिक लिंकिंग ऐसा कुछ प्रतीत होता है जो कोई भी नहीं करता है, शायद इसलिए कि सी लाइब्रेरी निर्भरता बहुत जटिल हैं। एम्बेड करना और फिर एसएसएल डीएल लोड करना आपका एकमात्र विकल्प प्रतीत होता है, और हां, एक 32 बिट डीएलएल 64 बिट विंडोज़ पर काम करेगा। ऐसा क्यों नहीं होगा? –

+2

बस एक sidenote। आप 'इंडी' संगत 'ओपनएसएसएल' पुस्तकालयों को ['here'] (http://indy.fulgan.com/SSL/) से प्राप्त कर सकते हैं। वहां आपको पुस्तकालयों के 64-बिट संस्करण भी मिलेंगे। – TLama

उत्तर

2

आपने उन पुस्तकालयों के बारे में पूछा जो TIdSSLIOHandlerSocketOpenSSL वर्ग का समर्थन करते हैं, लेकिन यह बिल्कुल कक्षा है जिसके बाहरी टीएलएल की आवश्यकता है, इसकी TIdSSLIOHandlerSocketOpenSSL.StartSSL विधि में।

सबसे आसान समाधान डीएलएल (32 बिट या 64 बिट संस्करण) जहाज है, और अपने "SendMail" फ़ंक्शन को आमंत्रित करने के प्रयास से पहले डीएलएल की उपस्थिति को रनटाइम पर भी जांचें, इस तरह आप अपने उपयोगकर्ताओं को अधिक समझने योग्य त्रुटि संदेश प्रस्तुत कर सकते हैं, संकेत दिया कि आपके आवेदन द्वारा कौन सी फाइलें मिलेंगी।