'Return a list containing the charset(s) used in this message.
The returned list of items describes the Content-Type headers\'
charset parameter for this message and all the subparts in its
payload.
Each item will either be a string (the value of the charset parameter
in the Content-Type header of that part) or the value of the
\'failobj\' parameter (defaults to None), if the part does not have a
main MIME type of "text", or the charset is not defined.
The list will contain one string for each part of the message, plus
one for the container message (i.e. self), so that a non-multipart
message will still return a list of length 1.'

def get_charsets(self, failobj=None):

    return [part.get_content_charset(failobj) for part in self.walk()]
