Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Overbyte SSLSmtpCli Open SSL path değiştirme
#1
Selamlar;
Overbyte component setinde bulunan SSLSmtpCli ile mail gönderimi yapıyorum.
Ics ile uyumlu ssleay ve libeay dll'leri mevcut ve direk application pathine atınca sorunsuz çalışıyor.

Aynı unit içinde indy ile ssl üzerinden http post işlemleri var fakat ics'in sorunsuz çalıştığı dll'ler indy ile çalışmıyor.
Bu nedenle indy de bulunan IdOpenSSLSetLibPath methodu ile path belirterek indy kısmını hallettim.
Fakat işin enteresan tarafı bu komutu çalıştırınca ics'te aynı path'de dll'leri aramaya başladı ve mail gönderimlerini yapamadım.
EIcsLibeayException Unsupported OpenSSL version (0x1000210F) !
Supported versions are 0x0090805F - 0x100000AF
FileName: C:\TVCC\SrvDll\libeay32.dll
Gönderim yapmaya çalıştığımda yukardaki hatayı üretiyor.
Bu nedenle aynı komutu ics mail gönderimi öncesinde tekrar çalıştırdım fakat ne hikmetse ilk setlediğim path'e bakıyor ve aynı hatayı vermeye devam ediyor. Ics içinde bu pathlerin yerini belirtebileceğim bir method'da bulamadım.
Soruyu çok uzattım özetle SSLSmtpCli kullanımı esnasında openSSl library pathlerini gösterebileceğim bir metod var mıdır?
İmam Süleyman Yakub <--> Molla Mustafa Mansur
Evlatlarım!
Cismanımız TÜRK ruhumuz ise İSLAM.
Bu yolda daim olalım her an.
Cevapla
#2
ICS kullanmıyorum ama; IdOpenSSLSetLibPath fonksiyonuna baktığımda:
var
 GIdOpenSSLPath: String = '';

procedure IdOpenSSLSetLibPath(const APath: String);
begin
 if APath <> '' then begin
   GIdOpenSSLPath := IndyIncludeTrailingPathDelimiter(APath);
 end else begin
   GIdOpenSSLPath := '';
 end;
end;

Sadece GIdOpenSSLPath değişkenini güncellediği gözüküyor. Bunun da ICS'yi etkileyeceğini hiç zannetmiyorum. Farklı bir sorun mu var acaba  Huh
There's no place like 127.0.0.1
WWW
Cevapla
#3
(10-10-2018, Saat: 15:09)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.ICS kullanmıyorum ama; IdOpenSSLSetLibPath fonksiyonuna baktığımda:
var
 GIdOpenSSLPath: String = '';

procedure IdOpenSSLSetLibPath(const APath: String);
begin
 if APath <> '' then begin
   GIdOpenSSLPath := IndyIncludeTrailingPathDelimiter(APath);
 end else begin
   GIdOpenSSLPath := '';
 end;
end;

Sadece GIdOpenSSLPath değişkenini güncellediği gözüküyor. Bunun da ICS'yi etkileyeceğini hiç zannetmiyorum. Farklı bir sorun mu var acaba  Huh

  Aynen dediğin gibi durum ama ics'in baktığı dll pathi niye değişir anlamsız geldi banada. Aynca aynı fonksiyonu ics kullanımından hemen önce çalştırdğımda da etki etmiyor. Başka bir durum var galiba.
İmam Süleyman Yakub <--> Molla Mustafa Mansur
Evlatlarım!
Cismanımız TÜRK ruhumuz ise İSLAM.
Bu yolda daim olalım her an.
Cevapla
#4
Merhaba,
Hataya baktığımızda da; iki farklı SSL library görünüyor. Kullandığınız bileşen seti mevcut sürümü desteklemiyor. Aynı hata mesajında, desteklenen sürüm bilgisi de yer alıyor.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#5
Evet doğru. O hata mesajının nedeni IdOpenSSLSetLibPath ile indy'nin çalışması için setlediğim path'den kaynaklı. Normalde ics extractFilePath(Paramstr(0))'a bakıyor. Burada ics'in uyumlu olduğu dll'ler var fakat IdOpenSSLSetLibPath metodunu çağırınca ics burada setlediğim path'e bakıyor. @SimaWeb'in dediği gibi ilgisi yok gibi ama bir şekilde etkiliyor galiba. Aynı metodu bir daha çağırıyorum pathi düzeltmesi için fakat bu her türlü ilk setlediğim path'de kalıyor. Enteresan bir durum.

OverbyteIcsLIBEAY,  OverbyteIcsSSLEAY unitlerinde const olarak tanımlanmış aşağıdaki değişkenleri buldum ve değerleri aşağıdaki gibi setledim ve çalıştı. Aslında setlemeden önceki değeri constta belirtilen değerle aynı, bu işlemi yapmadan da çalışması lazımdı?

  OverbyteIcsLIBEAY.GLIBEAY_DLL_Name:=ExtractFilePath(Paramstr(0))+'libeay32.dll';
  OverbyteIcsSSLEAY.GSSLEAY_DLL_Name:=ExtractFilePath(Paramstr(0))+'ssleay32.dll';
Test ortamında kullanılan mail sunucusu ssl'sizmiş bu nedenle beni yanılttı.
Yukarda yaptığım değişiklikten sonra ics mail gönderiminde

EIcsSsleayException Unable to load C:\TVCC\ssleay32.dll. Win32 error #182
hatası vermeye başladı. Araştırmaya devam ediyorum hala.
İmam Süleyman Yakub <--> Molla Mustafa Mansur
Evlatlarım!
Cismanımız TÜRK ruhumuz ise İSLAM.
Bu yolda daim olalım her an.
Cevapla
#6
Ayrı bir exe yaptım bu exe sadece apiyi çağırıp gönderilecek mailleri queue mantığı ile db'ye yazdım. Ve bu exe'yi ayrı bir path'e attım uyumlu olan ssl dosyaları ile birlite. Ana exe'den bu exe'yi çağırıp api gönderimlerini sağladım ana exe üzerinden de queue'deki mail'leri gönderdim. 10.2'ye projeyi geçirince bu derdimiz kalmayacak.
İmam Süleyman Yakub <--> Molla Mustafa Mansur
Evlatlarım!
Cismanımız TÜRK ruhumuz ise İSLAM.
Bu yolda daim olalım her an.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Kelime Değiştirme quiet1day 46 4.269 09-09-2019, Saat: 16:17
Son Yorum: DelphiCan
  Object was open Hatası Emrah Karagöz 7 490 05-07-2019, Saat: 08:43
Son Yorum: Tuğrul HELVACI
  FDConnection Open Close ahmetb 8 725 04-01-2019, Saat: 12:54
Son Yorum: ahmetb
  Bileşen Özelliklerini Değiştirme SercanTEK 7 999 26-10-2018, Saat: 11:10
Son Yorum: SercanTEK
  Dil Değiştirme gonulali 2 608 05-06-2018, Saat: 12:05
Son Yorum: gonulali



Konuyu Okuyanlar: 1 Ziyaretçi