Pythontr

husonet | Tarih: 14.04.2017

Indy ssl office365.com mail gönderme

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/ 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;