SSL ile mail gönderme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: SSL ile mail gönderme

Mesaj gönderen mrmarman »

Merhaba.

32 Bit işletim sistemi kullanıyorsan bu kütüphaneleri dene. D2007'de çalışıyor. D7'de de çalışacağını değerlendiriyorum.

Bu dll'leri uzağa değil, direkt projeni derlediğin EXE dosyanın olduğu klasöre kopyala. Doğru kütüphaneleri çalıştırdığına emin olduktan sonra sisteminde dilediğin yere taşır oraya bakılmasını sağlarsın.

Fonksiyon:

Kod: Tümünü seç

USES  IdMessage, IdIOHandler, IdIOHandlerSocket, IdIOHandlerStack, IdSSL,
      IdSSLOpenSSL, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
      IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase, IdSMTP,
      IdPOP3;

function ePostaYollaGMAIL( strAlici, strKonu, strMesaj, strUserName, strPass : String ): Boolean;
Var
  IdSMTP    : TIdSMTP;
  IOHandler : TIdSSLIOHandlerSocketOpenSSL;
  IdMessage : TIdMessage;
begin
  IdSMTP                              := TIdSMTP.Create(nil);
  IOHandler                           := TIdSSLIOHandlerSocketOpenSSL.Create(nil);

  IdSMTP.Host                         :='smtp.gmail.com';
  IdSMTP.Port                         := 587;
  IdSMTP.Username                     := strUserName;
  IdSMTP.Password                     := strPass;
  IdSMTP.IOHandler                    := IOHandler;
  IdSMTP.UseTLS                       := utUseExplicitTLS;

  IdMessage                           := TIdMessage.Create(nil);
  IdMessage.From.Address              := strUserName;
  IdMessage.Recipients.EMailAddresses := strAlici;
  IdMessage.Subject                   := strKonu;
  IdMessage.Body.Text                 := strMesaj;

  IOHandler.Host                       := IdSMTP.Host;
  IOHandler.Port                       := 587;
  IOHandler.Destination                := IdSMTP.Host + ':' + IntToStr(IdSMTP.Port);;
  IOHandler.SSLOptions.Method          := sslvTLSv1;
  IOHandler.SSLOptions.Mode            := sslmUnassigned;
  IOHandler.SSLOptions.VerifyMode      := [];
  IOHandler.SSLOptions.VerifyDepth     := 0;

  try
    try
      if not IdSMTP.Connected then IdSMTP.Connect() ;
      IdSMTP.Send(IdMessage); //burada programı kesiyor, Exception class EIdSocketError with message 'Socket Error # 10060 Connection timed out.'. hatası veriyor bu nasıl düzelir delphi XE...[/COLOR]
      Result := True;
    except on E:Exception do
      Result := False;
    end;
  finally
    if IdSMTP.Connected then IdSMTP.Disconnect;
    IdMessage.Free;
    IOHandler.Free;
    IdSMTP.Free;
  end;
end;
Kullanımı :

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
Var
  strAlici, strKonu, strMesaj, strUser, strPass : String;
begin
  strAlici := Edit3.Text;
  strKonu  := Edit4.Text;
  strMesaj := Memo1.Lines.Text;
  strUser  := Edit1.Text;
  strPass  := Edit2.Text;

  if ePostaYollaGMAIL( strAlici, strKonu, strMesaj, strUser, strPass )
    then MessageDlg('Mesaj başarıyla gönderildi...', mtInformation, [mbOk], 0)
    else MessageDlg('Mesaj gönderme işleminde sorun çıktı...', mtError, [mbOk], 0);
end;
Resim
Resim ....Resim
Kullanıcı avatarı
cinarbil
Üye
Mesajlar: 109
Kayıt: 18 Mar 2014 09:26

Re: SSL ile mail gönderme

Mesaj gönderen cinarbil »

Aynı sorun bende de olmuştu
Muharrem beyin sayesinde düzelttim.

viewtopic.php?f=2&t=33494&p=180423#p180423
"…De ki: "Hiç bilenlerle bilmeyenler bir olur mu? Şüphesiz, temiz akıl sahipleri öğüt alıp-düşünürler" (Zümer Suresi, 9)
Cevapla