class_docstr: This hook connects to a mail server by using the imap protocol.
  
  .. note:: Please call this Hook as context manager via `with`
      to automatically open and close the connection to the mail server.
  
  :param imap_conn_id: The :ref:`imap connection id <howto/connection:imap>`
      that contains the information used to authenticate the client.
code: def _fetch_mail_body(self, mail_id: str) -> str:
      if not self.mail_client:
          raise Exception(
              "The 'mail_client' should be initialized before!"
          )
      _, data = self.mail_client.fetch(mail_id, "(RFC822)")
      mail_body = data[0][1]  # type: ignore # The mail body is always in this specific location
      mail_body_str = mail_body.decode("utf-8")  # type: ignore
      return mail_body_str
  
imports: from __future__ import annotations
  import email
  import imaplib
  import os
  import re
  import ssl
  from typing import TYPE_CHECKING, Any, Iterable
  from airflow.exceptions import AirflowException
  from airflow.hooks.base import BaseHook
  from airflow.utils.log.logging_mixin import LoggingMixin
label_desc: Use image node_id 12 for calling the ImapHook obj's underlying member method code with example usage: obj._fetch_mail_body(mail_id) and returns: mail_body_str