makaleler / Diğer Konular / Indy ssl office365.com mail gönderme

Indy ssl office365.com mail gönderme

14.04.2017 11:08:56

Delphi üzerinde indy bileşeni kullanarak office365.com için mail gönderme işlemi.

Office365, yalnızca TLS 587 numaralı port üzerinden şifreleme ve SASL üzerinden login işlemini destekler. SASL ve TLS tamamen birbirlerinden ayrı ve ilgisiz şeylerdir.


SASL Nedir?

SASL, bir bağlantı üzerinden iletilen kullanıcı kimlik bilgilerini korumak için tasarlanmıştır.


TLS Nedir?

TLS, üzerinden iletilen bağlantı ne olursa olsun, bağlantıyı şifrelemek üzere tasarlanmıştır.

Not: http://indy.fulgan.com/SSL/ [indy.fulgan.com] adresinden indireceğiniz programınız derlediğiniz işlemci ortamına göre gerekli ssl dosyaları indirmelisiniz. Örnek olarak 32 bit için "openssl-1.0.2-i386-win32.zip", 64 bit içinde "openssl-1.0.2-x64_86-win64.zip" sıkıştırılmış dosyaları indirebilirsiniz.

office365.com için tasarlanmış örnek uygulama için aşağıdaki örneği inceleyebilirsiniz.


procedure TForm1.HusoOffice365Mail(sGonderen, sAlici, sKonu, sDosya: String;
  sMesaj: TStringList);
var
  idSMTP1: TIdSMTP;
  idMessage: TIdMessage;
  Attachment : TIdAttachmentfile;
begin
  idSMTP1 := TIdSMTP.Create(nil);
  idMessage := TIdMessage.Create(nil);
  try
    idSMTP1.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(idSMTP1);
    idSMTP1.UseTLS := utUseExplicitTLS;
    TIdSSLIOHandlerSocketOpenSSL(idSMTP1.IOHandler).SSLOptions.Method := sslvTLSv1; // sslvSSLv3;

    idSMTP1.Host := 'smtp.office365.com';
    idSMTP1.Port := 587;
    idSMTP1.AuthType := satDefault;
    idSMTP1.Username := 'musteri@xxxxx.com';
    idSMTP1.Password := 'xxxxxx';


    idMessage.From.Text := sGonderen;
    idMessage.ReplyTo.EMailAddresses := sGonderen;
    idMessage.Recipients.EMailAddresses := sAlici;
    idMessage.Subject := sKonu;
    idMessage.Body.AddStrings(sMesaj);
    idMessage.Encoding := meMIME;

    if FileExists(sDosya) then
    begin
      Attachment := TIdAttachmentfile.Create(idMessage.MessageParts,sDosya);
      Attachment.FileName := sDosya;
    end;

    try
      idSMTP1.Connect;
      try
        idSMTP1.Authenticate;
        idSMTP1.Send(idMessage);
      finally
        idSMTP1.Disconnect;
      end;
      ShowMessage('OK');
    except
      on E: Exception do
      begin
        ShowMessage(Format('Hata!'#13'[%s] %s', [E.ClassName, E.Message]));
        raise;
      end;
    end;
  finally
    idMessage.Free;
    idSMTP1.Free;
  end;

end;


procedure TForm1.cxButton1Click(Sender: TObject);
var
  StringList: TStringList;
begin
  //mySendMail;
  StringList := TStringList.Create;
  try
    StringList.Add('Huseyin Özdemir');
    StringList.Add('Delphi deneme');
    StringList.Add('ğüişçö ĞÜİŞÇÖ');
    HusoOffice365Mail('musteri@xxx.com', 'huseyin@xxxx.com', 'Pythontr', 'C:\Mail\husonet.jpg', StringList);
    HusoOffice365Mail('musteri@xxx.com', 'huseyin@xxxx.com', 'Pythontr', '', StringList);
  finally
    StringList.Free;
  end;

end;
yazar husonet

Yorumlar

Bu içerik için sizde yorum yapabilirsiniz!
Fırat
Fırat
14.04.2017 11:14:23

Çok güzel bir çalışma olmuş. Ellerinize sağlık.

anasayfa | makaleler | haberler | dosyalar | linkler | hakkımızda