anchor.diff:    tmp.Reference:= aReferenceName;
     tmp.MIMEType:= aMIMEType;
     Result:= Self;
  +end;
  +
  +procedure TSendMail.AddSSLHandler(aSMTP : TIdSMTP);
  +var
  +  SSLHandler: TIdSSLIOHandlerSocketOpenSSL;
  +begin
  +  SSLHandler := TIdSSLIOHandlerSocketOpenSSL.Create(aSMTP);
  +  // SSL/TLS handshake determines the highest available SSL/TLS version dynamically
  +  SSLHandler.SSLOptions.Method := sslvSSLv23;
  +  SSLHandler.SSLOptions.Mode := sslmClient;
  +  SSLHandler.SSLOptions.VerifyMode := [];
  +  SSLHandler.SSLOptions.VerifyDepth := 0;
  +  aSMTP.IOHandler := SSLHandler;
  +end;
  +
  +procedure TSendMail.InitSASL(aSMTP : TIdSMTP; const aUserName, aPassword : String);
  +var
  +  IdUserPassProvider: TIdUserPassProvider;
  +  IdSASLCRAMMD5: TIdSASLCRAMMD5;
  +  IdSASLCRAMSHA1: TIdSASLCRAMSHA1;
  +  IdSASLPlain: TIdSASLPlain;
  +  IdSASLLogin: TIdSASLLogin;
  +  IdSASLSKey: TIdSASLSKey;
  +  IdSASLOTP: TIdSASLOTP;
  +  IdSASLAnonymous: TIdSASLAnonymous;
  +  IdSASLExternal: TIdSASLExternal;
  +begin
  +  IdUserPassProvider := TIdUserPassProvider.Create(aSMTP);
  +  IdUserPassProvider.Username := aUserName;
  +  IdUserPassProvider.Password:= aPassword;
  +
  +  IdSASLCRAMSHA1 := TIdSASLCRAMSHA1.Create(aSMTP);
  +  IdSASLCRAMSHA1.UserPassProvider := IdUserPassProvider;
  +  IdSASLCRAMMD5 := TIdSASLCRAMMD5.Create(aSMTP);
  +  IdSASLCRAMMD5.UserPassProvider := IdUserPassProvider;
  +  IdSASLSKey := TIdSASLSKey.Create(aSMTP);
  +  IdSASLSKey.UserPassProvider := IdUserPassProvider;
  +  IdSASLOTP := TIdSASLOTP.Create(aSMTP);
  +  IdSASLOTP.UserPassProvider := IdUserPassProvider;
  +  IdSASLAnonymous := TIdSASLAnonymous.Create(aSMTP);
  +  IdSASLExternal := TIdSASLExternal.Create(aSMTP);
  +  IdSASLLogin := TIdSASLLogin.Create(aSMTP);
  +  IdSASLLogin.UserPassProvider := IdUserPassProvider;
  +  IdSASLPlain := TIdSASLPlain.Create(aSMTP);
  +  IdSASLPlain.UserPassProvider := IdUserPassProvider;
  +
  +  aSMTP.SASLMechanisms.Add.SASL := IdSASLCRAMSHA1;
  +  aSMTP.SASLMechanisms.Add.SASL := IdSASLCRAMMD5;
  +  aSMTP.SASLMechanisms.Add.SASL := IdSASLSKey;
  +  aSMTP.SASLMechanisms.Add.SASL := IdSASLOTP;
  +  aSMTP.SASLMechanisms.Add.SASL := IdSASLAnonymous;
  +  aSMTP.SASLMechanisms.Add.SASL := IdSASLExternal;
  +  aSMTP.SASLMechanisms.Add.SASL := IdSASLLogin;
  +  aSMTP.SASLMechanisms.Add.SASL := IdSASLPlain;
   end;
   
   constructor TSendMail.Create;
  
positive.code:     function SetCCRecipients(const aRecipients: String): TSendMail;
      function SetBCCRecipients(const aRecipients: String): TSendMail;
      function SetSubject(const aSubject: String): TSendMail;
  
      function AddHTMLImageFile(const aFileName, aReferenceName: String): TSendMail;
      function AddHTMLImage(const aData : TStream; const aMIMEType: String; const aReferenceName : String): TSendMail;
  
negative.code:     FAttachments : TObjectList;
      FHTML: TStringList;
      FPlainText : TStringList;
      FSSLConnection : boolean;
    strict private
      procedure AddSSLHandler(aSMTP : TIdSMTP);
      procedure InitSASL(aSMTP : TIdSMTP; const aUserName, aPassword : String);
    public
      constructor Create;
      destructor Destroy; override;
  