Отправить HTML письмо из Excel - PullRequest
0 голосов
/ 29 февраля 2020

Я пытаюсь отправить электронные письма в формате HTML разным получателям из листа Excel. Каждый раз, когда я пытаюсь отправить сообщение, оно отправляется, но текст сообщения принимается буквально с кодом html, который не может отображаться правильно. Как правильно написать, чтобы отправлять HTML сообщений, визуализирующих правильно?

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import pandas as pd
import smtplib
import email.message

msg = email.message.Message()

password = "XXXXXX"
msg['From'] = "xxxxxx@xxx.com"

email_list = pd.read_excel(open('C:\\Users\\desktop\\listaemail.xlsx','rb'), sheet_name = 'Hoja1')

all_names = email_list['Name']
all_emails = email_list['Email']
all_subjects = email_list['Subject']
all_messages = email_list['Message']

for idx in range(len(all_emails)):

    name = all_names[idx]
    email = all_emails[idx]
    subject = all_subjects[idx]
    email_content = all_messages[idx]

    full_email = ("From: {0} <{1}>\nTo: {2} <{3}>\nSubject: {4}\n\n{5}".format("Marco", msg['From'], name, email, subject, email_content))

    try:
            msg.add_header('Content-Type', 'text/html')
            msg.set_payload(email_content)
            server = smtplib.SMTP('smtp.office365.com: 587')
            server.starttls()
            server.login(msg['From'], password)
            server.sendmail(msg['From'], [email], full_email)
            print ("successfully sent email to %s:" % ([email]))

    except Exception as e:
        print('Email to {} could not be sent :( because {}\n\n'.format(email, str(e)))

server.quit()

print ("Sent")

1 Ответ

0 голосов
/ 03 марта 2020

перед отправкой электронного письма вам необходимо указать, какая часть вашего электронного письма является HTML, а какая нет, просто присоедините его с помощью msg.attach и укажите, что это MIMEText

from email.mime.text import MIMEText


msg.attach(MIMEText(html_content, 'html'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...