Добрый день.
Подскажите. Есть задача.
1. Получить почтовое сообщение.
2. Получить нужные поля "From", "To", "Subject"
3. Полученное сообщение добавить свои данные в начало и в конец. Что то типа "Сообщение получено на ящик 123@vZyx.com и содержит нужное слово"
4. Направить на нужную почту.
Все это получилось сделать.
imap_descprt = get_connect_to_server_IMAP("123@vZyx.com", global_check_email_login, global_check_email_password, global_IMAP_port)
imap_descprt.select('INBOX')
status, res = imap_descprt.uid("search", None, "(UNSEEN)")
res = b''.join(res).decode("UTF-8")
if res and status == "OK":
body = str()
for res_now in res.split(" "):
email_from_ = str()
result, data = imap_descprt.uid("fetch",res_now,"(RFC822)")
full_mail = email.message_from_bytes(data[0][1], policy=policy.default)
if full_mail.is_multipart():
for part in full_mail.get_payload():
ctype = str()
charset_type = str(part.get_content_charset())
ctype = part.get_content_type()
if ctype == "text/plain" or ctype == "text/html":
body += part.get_payload(decode = True).decode(charset_type) # decode
#body += part.get_payload(decode = False) # No decode
else:
charset_type = str(full_mail.get_content_charset())
body = full_mail.get_payload(decode = True).decode(charset_type) # decode
#body = full_mail.get_payload(decode = False) # No decode
Все работает если само письмо простое (то есть все пункты сделаны), body содержит нужный текст, но если это красиво оформленная html страничка, то жесть, угар, Игаиль. Все криво, ужасно.
Пытался в body добавлять как декодированный так и не декодированный текст письма и затем
msg = MIMEMultipart("mixed")
msg['To'] = email_from
msg['From'] = sender_email
msg['Subject'] = Header(str("REsend: " + email_subject), 'UTF-8')
msg.attach( MIMEText(body_to_send_part_1, "html", _charset='UTF-8') )
msg.attach( MIMEText(body, "plain", _charset='UTF-8') )
Понятно что MIMEText для не декодированного сообщения не подходит, а что подходит не смог найти. Вообще примеров по отправке писем чуть больше чем надо, а вот именно работа с данными из письма, к сожалению приходится вычитывать весть stackoverflow и github
Пните пожалуйста на нужные примеры.
Спасибо.