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, bir bağlantı üzerinden iletilen kullanıcı kimlik bilgilerini korumak için tasarlanmıştır.
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;
Yorumlar
Çok güzel bir çalışma olmuş. Ellerinize sağlık.