Я пытаюсь собрать сценарий, который автоматически пересылает определенные письма, соответствующие конкретным критериям, на другое электронное письмо.Пересылка электронной почты с python smtplib
У меня есть загрузка и разбор сообщений с использованием 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[email protected]'
forward['To'] = '[email protected]'
smtp.sendmail(user, ['[email protected]'], forward.as_string())
Я уверен, что есть что-то немного более сложным, я должен делать в отношении к содержимому MIME сообщения. Конечно, есть простой способ просто переслать все сообщение?
# This doesn't work either, it just freezes...?
mail['From'] = '[email protected]'
mail['To'] = '[email protected]'
smtp.sendmail(user, ['[email protected]'], mail.as_string())
Здесь слишком много недостающего контекста, чтобы сделать какое-либо определение. В частности, используете ли вы стандартный smtplib? Какая версия Python. Где инициализируется smtp, это connect() ed? Получили ли вы надлежащий ответ HELO? – msw
Это стандартный smtplib, python2.6.4. Клиент smtplib работает нормально - я могу отправлять простые текстовые сообщения, передавая строку в качестве последнего аргумента smtp. Я просто хочу найти простой способ отправки всего содержимого MIME загруженного сообщения на новый адрес. – robbles