anchor.diff:      function AddHTMLPNGImage(const aData : TStream; const aReferenceName: String): TSendMail;
   
       function AttachFile(const aFileName : String; const aReferenceName : String = ''): TSendMail;
  -    function AttachData(const aData : TStream; const aMIMEType: String; const aReferenceName: String = ''): TSendMail;
  -    function AttachExcelData(const aData : TStream; const aReferenceName: String = ''): TSendMail;
  -    function AttachPDFData(const aData : TStream; const aReferenceName: String = ''): TSendMail;
  -    function AttachTXTData(const aData : TStream; const aReferenceName: String = ''): TSendMail;
  -    function AttachXMLData(const aData : TStream; const aReferenceName: String = ''): TSendMail;
  -    function AttachZIPData(const aData : TStream; const aReferenceName: String = ''): TSendMail;
  -    function AttachWordData(const aData : TStream; const aReferenceName: String = ''): TSendMail;
  +    function AttachData(const aData : TStream; const aMIMEType: String; const aFileName: String; const aReferenceName: String = ''): TSendMail;
  +    function AttachExcelData(const aData : TStream; const aFileName: String; const aReferenceName: String = ''): TSendMail;
  +    function AttachExcelOOXML(const aData : TStream; const aFileName: String; const aReferenceName: String = ''): TSendMail;
  +    function AttachExcelXLSX(const aData : TStream; const aFileName: String; const aReferenceName: String = ''): TSendMail;
  +    function AttachPDFData(const aData : TStream; const aFileName: String; const aReferenceName: String = ''): TSendMail;
  +    function AttachTXTData(const aData : TStream; const aFileName: String; const aReferenceName: String = ''): TSendMail;
  +    function AttachXMLData(const aData : TStream; const aFileName: String; const aReferenceName: String = ''): TSendMail;
  +    function AttachZIPData(const aData : TStream; const aFileName: String; const aReferenceName: String = ''): TSendMail;
  +    function AttachWordData(const aData : TStream; const aFileName: String; const aReferenceName: String = ''): TSendMail;
   
       function AddHTML(const aStrings: TStrings): TSendMail;
       function AddPlainText (const aStrings : TStrings) : TSendMail;
  
positive.code:   Result:= Self;
  end;
  
  function TSendMail.AttachExcelData(const aData: TStream; const aReferenceName: String): TSendMail;
  begin
    Result:= Self.AttachData(aData, 'application/x-msexcel', aReferenceName);
  end;
  
  function TSendMail.AttachPDFData(const aData: TStream; const aReferenceName: String): TSendMail;
  begin
    Result:= Self.AttachData(aData, 'application/pdf', aReferenceName);
  end;
  
  function TSendMail.AttachTXTData(const aData: TStream; const aReferenceName: String): TSendMail;
  begin
    Result:= Self.AttachData(aData, 'text/plain', aReferenceName);
  end;
  
  function TSendMail.AttachXMLData(const aData: TStream; const aReferenceName: String): TSendMail;
  begin
    Result:= Self.AttachData(aData, 'text/xml', aReferenceName);
  end;
  
  function TSendMail.AttachZIPData(const aData: TStream; const aReferenceName: String): TSendMail;
  begin
    Result:= Self.AttachData(aData, 'application/x-zip-compressed', aReferenceName);
  end;
  
  function TSendMail.AttachWordData(const aData: TStream; const aReferenceName: String): TSendMail;
  begin
    Result:= Self.AttachData(aData, 'application/msword', aReferenceName);
  end;
  
  function TSendMail.AttachData(const aData: TStream; const aMIMEType: String; const aReferenceName: String = ''): TSendMail;
  var
    tmp : TAttachedFile;
  begin
    tmp := TAttachedFile.Create;
    FAttachments.Add(tmp);
    tmp.FileType:= ftStream;
    tmp.Data:= aData;
    tmp.Reference:= aReferenceName;
  
negative.code:   htmlMessageBuilder : TIdMessageBuilderHtml;
    i : integer;
    f : TAttachedFile;
    tmpAttachment : TIdMessageBuilderAttachment;
  begin
    // https://www.indyproject.org/2008/01/16/new-html-message-builder-class/
    // https://www.indyproject.org/2005/08/17/html-messages/
  