Problema con Python Email Parsing

así que estoy tratando de escribir un script en python que inicie sesión en mi cuenta de gmail y luego me diga, pronto en una GUI, cuál es el mensaje. Le haré un poco más al código más adelante para hacer que el programa sea un poco más útil, pero ahora mismo estoy atascado en poder analizar la información en bruto que estoy obteniendo. Aquí está mi código:

#Read Email Script
import imaplib
import email

mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('[email protected]', 'passwordgoeshere')
mail.list()
mail.select("INBOX") # connect to inbox.


result, data = mail.search(None, "ALL")

ids = data[0]
id_list = ids.split()
latest_email_id = id_list[-1]

result, data = mail.fetch(latest_email_id, '(RFC822)')

raw_email = data[0][1]

email_message = email.message_from_string(raw_email)

print (email_message['Subject'])

Ahora, básicamente, se supone que esto intenta leer el asunto del último correo electrónico que se envió a mi bandeja de entrada. Sin embargo me sale el siguiente mensaje de error en la consola:

>>> 
Traceback (most recent call last):
  File "C:/Users/Dhruvin Desai/Documents/Python/script.py", line 21, in <module>
    email_message = email.message_from_string(raw_email)
  File "C:\Python33\lib\email\__init__.py", line 40, in message_from_string
    return Parser(*args, **kws).parsestr(s)
  File "C:\Python33\lib\email\parser.py", line 69, in parsestr
    return self.parse(StringIO(text), headersonly=headersonly)
TypeError: initial_value must be str or None, not bytes
>>> 

No sé por qué viene esto, pero como me dice que el valor deemail_message necesita estar en formato de cadena, intenté esto:

email_message = email.message_from_string(str(raw_email))

Pero el resultado después de ejecutar todo el script con ese cambio siempre, sin importar qué, resultó en la consola diciendo:None

No sé qué hacer, por favor ayuda.

Respuestas a la pregunta(1)

Su respuesta a la pregunta