title: Forwarding an email with python smtplib
body: <p>I'm trying to put together a script that automatically forwards certain emails that match a specific criteria to another email.</p>
  
  <p>I've got the downloading and parsing of messages using imaplib and email working, but I can't figure out how to forward an entire email to another address. Do I need to build a new message from scratch, or can I somehow modify the old one and re-send it?</p>
  
  <p>Here's what I have so far (client is an imaplib.IMAP4 connection, and id is a message ID):</p>
  
  <pre><code>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'] = 'source.email.address@domain.com'
  forward['To'] = 'my.email.address@gmail.com'
  
  smtp.sendmail(user, ['my.email.address@gmail.com'], forward.as_string())
  </code></pre>
  
  <p>I'm sure there's something slightly more complicated I need to be doing with regard to the MIME content of the message. Surely there's some simple way of just forwarding the entire message though?</p>
  
  <pre><code># This doesn't work either, it just freezes...?
  mail['From'] = 'source.email.address@domain.com'
  mail['To'] = 'my.email.address@gmail.com'
  smtp.sendmail(user, ['my.email.address@gmail.com'], mail.as_string())
  </code></pre>