Reenviar un correo electrónico con python smtplib

Estoy tratando de armar un script que reenvíe automáticamente ciertos correos electrónicos que coincidan con un criterio específico a otro correo electrónico.

Tengo la descarga y el análisis de mensajes usando imaplib y el correo electrónico funcionando, pero no puedo entender cómo reenviar un correo electrónico completo a otra dirección. ¿Necesito crear un nuevo mensaje desde cero o puedo modificar de alguna manera el antiguo y volver a enviarlo?

Esto es lo que tengo hasta ahora (el cliente es una conexión imaplib.IMAP4 y la identificación es una ID de mensaje):

import smtplib, imaplib

smtp = smtplib.SMTP(host, smtp_port)
smtp.login(user, passw)

client = imaplib.IMAP4(host)
client.login(user, passw)
client.select('INBOX')

status, data = client.fetch(id, '(RFC822)')
email_body = data[0][1]
mail = email.message_from_string(email_body)

# ...Process message...

# This doesn't work
forward = email.message.Message()
forward.set_payload(mail.get_payload())
forward['From'] = '[email protected]'
forward['To'] = '[email protected]'

smtp.sendmail(user, ['[email protected]'], forward.as_string())

Estoy seguro de que hay algo un poco más complicado que debo hacer con respecto al contenido MIME del mensaje. ¿Seguramente hay alguna forma simple de reenviar todo el mensaje?

# This doesn't work either, it just freezes...?
mail['From'] = '[email protected]'
mail['To'] = '[email protected]'
smtp.sendmail(user, ['[email protected]'], mail.as_string())

Respuestas a la pregunta(2)

Su respuesta a la pregunta