code: def body_encode(self, string):
          
          if not string:
              return string
          if self.body_encoding is BASE64:
              if isinstance(string, str):
                  string = string.encode(self.output_charset)
              return email.base64mime.body_encode(string)
          elif self.body_encoding is QP:
              # quopromime.body_encode takes a string, but operates on it as if
              # it were a list of byte codes.  For a (minimal) history on why
              # this is so, see changeset 0cf700464177.  To correctly encode a
              # character set, then, we must turn it into pseudo bytes via the
              # latin1 charset, which will encode any byte as a single code point
              # between 0 and 255, which is what body_encode is expecting.
              if isinstance(string, str):
                  string = string.encode(self.output_charset)
              string = string.decode('latin1')
              return email.quoprimime.body_encode(string)
          else:
              if isinstance(string, str):
                  string = string.encode(self.output_charset).decode('ascii')
              return string
docs: Body-encode a string by converting it first to bytes.
  
          The type of encoding (base64 or quoted-printable) will be based on
          self.body_encoding.  If body_encoding is None, we assume the
          output charset is a 7bit encoding, so re-encoding the decoded
          string using the ascii codec produces the correct string version
          of the content.