Я пытаюсь соединить сценарий, который автоматически пересылает определенную электронную почту, которая соответствует определенным критериям на другой адрес электронной почты.
У меня есть загрузка и парсинг сообщений с помощью imaplib и почтовой работы, но я не могу выяснить, как переслать всю электронную почту к другому адресу. Я должен создать новое сообщение с нуля, или я могу так или иначе изменить старый и снова послать его?
Вот то, что я имею до сих пор (клиент является imaplib. Соединение IMAP4 и идентификатор являются идентификатором сообщения):
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())
Я уверен, что существует что-то немного более сложное, которое я должен делать относительно содержания MIME сообщения. Конечно, существует некоторый простой способ просто передачи всего сообщения хотя?
# 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())