<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def gettext(self, msgid, stream=sys.stdout, splitter="--text follows this line--\n"):
 """Get the first text part we can find and print it as a message. This is a simple cowpath, most of the time you want the first plain part. 'msgid' is the message to be used 'stream' is printed to with the header, splitter, first-textpart 'splitter' is text used to split the header from the body, Emacs uses this """

        for hdr,part in self._get(msgid):
            if part.get_content_type() == "text/plain":
                for name,val in hdr:
                    # Use the subtype, since we're printing just that - tidy it up first
                    if name.lower() == "content-type":
                        val = part["content-type"]
                    val = " ".join([l.strip() for l in val.split("\n")])
                    print("%s: %s" % (name,val), file=stream)
                print(splitter, file=stream)
                payload = part.get_payload(decode=True)
                # There seems to be a problem with the parser not doing charsets for parts
                chartype = part.get_charset() \
                    or _get_charset(part.get("Content-Type", "")) \
                    or "us-ascii"
                print(payload.decode(chartype), file=stream)
                break