code: def body_encode(body, maxlinelen=76, eol=NL):
      
  
      if maxlinelen < 4:
          raise ValueError("maxlinelen must be at least 4")
      if not body:
          return body
  
      # The last line may or may not end in eol, but all other lines do.
      last_has_eol = (body[-1] in '\r\n')
  
      # This accumulator will make it easier to build the encoded body.
      encoded_body = _body_accumulator(maxlinelen, eol)
  
      lines = body.splitlines()
      last_line_no = len(lines) - 1
      for line_no, line in enumerate(lines):
          last_char_index = len(line) - 1
          for i, c in enumerate(line):
              if body_check(ord(c)):
                  c = quote(c)
              encoded_body.write_char(c, i==last_char_index)
          # Add an eol if input line had eol.  All input lines have eol except
          # possibly the last one.
          if line_no < last_line_no or last_has_eol:
              encoded_body.newline()
  
      return encoded_body.getvalue()
docs: Encode with quoted-printable, wrapping at maxlinelen characters.
  
      Each line of encoded text will end with eol, which defaults to "\\n".  Set
      this to "\\r\\n" if you will be using the result of this function directly
      in an email.
  
      Each line will be wrapped at, at most, maxlinelen characters before the
      eol string (maxlinelen defaults to 76 characters, the maximum value
      permitted by RFC 2045).  Long lines will have the 'soft line break'
      quoted-printable character "=" appended to them, so the decoded text will
      be identical to the original text.
  
      The minimum maxlinelen is 4 to have room for a quoted character ("=XX")
      followed by a soft line break.  Smaller values will generate a
      ValueError.