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())