docs: def get_attachment(self, ticket_id, attachment_id):
          """ Get attachment.
  
          :param ticket_id: ID of ticket
          :param attachment_id: ID of attachment for obtain
          :returns: Attachment as dictionary with these keys:
  
                        * Transaction
                        * ContentType
                        * Parent
                        * Creator
                        * Created
                        * Filename
                        * Content (bytes type)
                        * Headers
                        * MessageId
                        * ContentEncoding
                        * id
                        * Subject
  
                    All these fields are strings, just 'Headers' holds another
                    dictionary with attachment headers as strings e.g.:
  
                        * Delivered-To
                        * From
                        * Return-Path
                        * Content-Length
                        * To
                        * X-Seznam-User
                        * X-QM-Mark
                        * Domainkey-Signature
                        * RT-Message-ID
                        * X-RT-Incoming-Encryption
                        * X-Original-To
                        * Message-ID
                        * X-Spam-Status
                        * In-Reply-To
                        * Date
                        * Received
                        * X-Country
                        * X-Spam-Checker-Version
                        * X-Abuse
                        * MIME-Version
                        * Content-Type
                        * Subject
  
                    .. warning:: Content-Length parameter is set after opening
                                 ticket in web interface!
  
                    Set of headers available depends on mailservers sending
                    emails not on Request Tracker!
  
                    Returns None if ticket or attachment does not exist.
          :raises UnexpectedMessageFormat: Unexpected format of returned message.
          """
          msg = self.__request('ticket/{}/attachments/{}'.format(str(ticket_id), str(attachment_id)),
                               text_response=False)
          msg = msg.split(b'\n')
          if (len(msg) > 2) and (self.RE_PATTERNS['invalid_attachment_pattern_bytes'].match(msg[2]) or self.RE_PATTERNS['does_not_exist_pattern_bytes'].match(msg[2])):
              return None
          msg = msg[2:]
          head_matching = [i for i, m in enumerate(msg) if self.RE_PATTERNS['headers_pattern_bytes'].match(m)]
          head_id = head_matching[0] if head_matching else None
          if not head_id:
              raise UnexpectedMessageFormat('Unexpected headers part of attachment entry. \
                                             Missing line starting with `Headers:`.')
          msg[head_id] = re.sub(b'^Headers: (.*)$', r'\1', msg[head_id])
          cont_matching = [i for i, m in enumerate(msg) if self.RE_PATTERNS['content_pattern_bytes'].match(m)]
          cont_id = cont_matching[0] if cont_matching else None
          if not cont_matching:
              raise UnexpectedMessageFormat('Unexpected content part of attachment entry. \
                                             Missing line starting with `Content:`.')
          pairs = {}
          for i in range(head_id):
              if b': ' in msg[i]:
                  header, content = msg[i].split(b': ', 1)
                  pairs[header.strip().decode('utf-8')] = content.strip().decode('utf-8')
          headers = {}
          for i in range(head_id, cont_id):
              if b': ' in msg[i]:
                  header, content = msg[i].split(b': ', 1)
                  headers[header.strip().decode('utf-8')] = content.strip().decode('utf-8')
          pairs['Headers'] = headers
          content = msg[cont_id][9:]
          for i in range(cont_id + 1, len(msg)):
              if msg[i][:9] == (b' ' * 9):
                  content += b'\n' + msg[i][9:]
          pairs['Content'] = content
          return pairs