code: def attach(self, attachment, filename=None, ctype=None):
          
  
          if isinstance(attachment, Attachment):
              self.attachments.append(attachment)
          elif isinstance(attachment, str):
              path = os.path.expanduser(attachment)
              part = helper.mimewrap(path, filename, ctype)
              self.attachments.append(Attachment(part))
          else:
              raise TypeError('attach accepts an Attachment or str')
  
          if self.sent_time:
              self.modified_since_sent = True
docs: attach a file
  
          :param attachment: File to attach, given as
              :class:`~alot.db.attachment.Attachment` object or path to a file.
          :type attachment: :class:`~alot.db.attachment.Attachment` or str
          :param filename: filename to use in content-disposition.
              Will be ignored if `path` matches multiple files
          :param ctype: force content-type to be used for this attachment
          :type ctype: str