Пересылка почты с использованием Python с добавленным новым содержимым

После замены заголовков, таких как from,to,sub, я могу пересылать почту на другой адрес электронной почты. Но как я могу пересылать почту, добавляя больше вложений и больше текста или html-контента.

Как мы видим в gmail, новое содержимое должно отображаться перед содержимым пересылаемого сообщения. Любая идея о том, как мы могли бы достичь этого?

Пересылаемая почта может быть составной или нет.

Но поскольку мы добавляем новый контент, он будет состоять из нескольких частей.

Я пробовал код ниже

# open IMAP connection and fetch message with id msgid
# store message data in email_data
client = imaplib.IMAP4_SSL(imap_host,993)
client.login(user, passwd)
client.select('INBOX')
result, data = client.uid('fetch', msg_id, "(RFC822)")
client.close()
client.logout()

# create a Message instance from the email data
message = email.message_from_string(data[0][1])

# replace headers (could do other processing here)
message.replace_header("From", from_addr)
message.replace_header("To", to_addr)
message.replace_header("Subject", "Fwd:"+ message["Subject"].replace("FWD: ", "").replace("Fwd: ","" ))


# open authenticated SMTP connection and send message with
# specified envelope from and to addresses
smtp = smtplib.SMTP_SSL(smtp_host, smtp_port)
smtp.login(user, passwd)
smtp.sendmail(from_addr, to_addr, message.as_string())
smtp.quit()

person JithPS    schedule 29.02.2016    source источник
comment
Привет, ты нашел решение этой проблемы?   -  person Ankur Sharma    schedule 06.11.2017
comment
@Анкур Шарма, еще нет   -  person JithPS    schedule 07.11.2017
comment
Любые новости об этом. Я тоже с этим ковыряюсь.   -  person wedi    schedule 07.02.2019


Ответы (1)


Я смог добиться этого с помощью пакета email, прикрепив исходное электронное письмо как часть:

from email.message import Message
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.message import MIMEMessage
from email import message_from_bytes

raw_email = get_raw_email() # get the original email from wherever
original_email = message_from_bytes(raw_email)

part1 = MIMEText("This is new content")
part2 = MIMEMessage(original_email)

new_email = MIMEMultipart()
new_email['Subject'] = "My subject"
new_email['From'] = '[email protected]'
new_email['To'] = '[email protected]'
new_email.attach(part1)
new_email.attach(part2)

person naicolas    schedule 23.01.2021