class_docstr: Basic message object.
  
  A message object is defined as something that has a bunch of RFC 2822
  headers and a payload.  It may optionally have an envelope header
  (a.k.a. Unix-From or From_ header).  If the message is a container (i.e. a
  multipart or a message/rfc822), then the payload is a list of Message
  objects, otherwise it is a string.
  
  Message objects implement part of the `mapping' interface, which assumes
  there is exactly one occurrence of the header per message.  Some headers
  do in fact appear multiple times (e.g. Received) and for those headers,
  you must use the explicit API to set or get all the headers.  Not all of
  the mapping methods are implemented.
docstr: Return the parameter value if found in the Content-Type header.
  
  Optional failobj is the object to return if there is no Content-Type
  header, or the Content-Type header has no such parameter.  Optional
  header is the header to search instead of Content-Type.
  
  Parameter keys are always compared case insensitively.  The return
  value can either be a string, or a 3-tuple if the parameter was RFC
  2231 encoded.  When it's a 3-tuple, the elements of the value are of
  the form (CHARSET, LANGUAGE, VALUE).  Note that both CHARSET and
  LANGUAGE can be None, in which case you should consider VALUE to be
  encoded in the us-ascii charset.  You can usually ignore LANGUAGE.
  
  Your application should be prepared to deal with 3-tuple return
  values, and can convert the parameter to a Unicode string like so:
  
      param = msg.get_param('foo')
      if isinstance(param, tuple):
          param = unicode(param[2], param[0] or 'us-ascii')
  
  In any case, the parameter value (either the returned string, or the
  VALUE item in the 3-tuple) is always unquoted, unless unquote is set
  to False.
docstr_tok: ["Return","the","parameter","value","if","found","in","the","Content-Type","header",".","Optional","failobj","is","the","object","to","return","if","there","is","no","Content-Type","header",",","or","the","Content-Type","header","has","no","such","parameter",".","Optional","header","is","the","header","to","search","instead","of","Content-Type",".","Parameter","keys","are","always","compared","case","insensitively",".","The","return","value","can","either","be","a","string",",","or","a","3-tuple","if","the","parameter","was","RFC","2231","encoded",".","When","it","'s","a","3-tuple",",","the","elements","of","the","value","are","of","the","form","(","CHARSET",",","LANGUAGE",",","VALUE",")",".","Note","that","both","CHARSET","and","LANGUAGE","can","be","None",",","in","which","case","you","should","consider","VALUE","to","be","encoded","in","the","us-ascii","charset",".","You","can","usually","ignore","LANGUAGE",".","Your","application","should","be","prepared","to","deal","with","3-tuple","return","values",",","and","can","convert","the","parameter","to","a","Unicode","string","like","so",":","param","=","msg.get_param","(","'foo","'",")","if","isinstance","(","param",",","tuple",")",":","param","=","unicode","(","param","[","2","]",",","param","[","0","]","or","'us-ascii","'",")","In","any","case",",","the","parameter","value","(","either","the","returned","string",",","or","the","VALUE","item","in","the","3-tuple",")","is","always","unquoted",",","unless","unquote","is","set","to","False","."]
code: def get_param(
      self, param, failobj=None, header="content-type", unquote=True
  ):
      """Return the parameter value if found in the Content-Type header.
  
      Optional failobj is the object to return if there is no Content-Type
      header, or the Content-Type header has no such parameter.  Optional
      header is the header to search instead of Content-Type.
  
      Parameter keys are always compared case insensitively.  The return
      value can either be a string, or a 3-tuple if the parameter was RFC
      2231 encoded.  When it's a 3-tuple, the elements of the value are of
      the form (CHARSET, LANGUAGE, VALUE).  Note that both CHARSET and
      LANGUAGE can be None, in which case you should consider VALUE to be
      encoded in the us-ascii charset.  You can usually ignore LANGUAGE.
  
      Your application should be prepared to deal with 3-tuple return
      values, and can convert the parameter to a Unicode string like so:
  
          param = msg.get_param('foo')
          if isinstance(param, tuple):
              param = unicode(param[2], param[0] or 'us-ascii')
  
      In any case, the parameter value (either the returned string, or the
      VALUE item in the 3-tuple) is always unquoted, unless unquote is set
      to False.
      """
      if header not in self:
          return failobj
      for k, v in self._get_params_preserve(failobj, header):
          if k.lower() == param.lower():
              if unquote:
                  return _unquotevalue(v)
              else:
                  return v
      return failobj
  
imports: import re
  import uu
  import binascii
  import warnings
  from cStringIO import StringIO
  import email.charset
  from email import utils
  from email import errors
label_desc: Use image node_id 32 for calling the Message obj's underlying member method code with example usage: obj.get_param(param, failobj, header, unquote) and returns: failobj, failobj, _unquotevalue, v