在Python中更改电子邮件正文的某些颜色

时间:2019-09-15 05:36:58

标签: python html python-3.x email html-email

我正在尝试使用MIMEMultipart更改电子邮件正文中某些文本的颜色。 此python代码的目的是在某些情况下更改颜色。因此,如果字典中有“ days”一词,则颜色应该是某种东西,如果不是,则颜色应该是黑色。但是不幸的是,它仅发送字典的最后一个值,而不发送所有值。 应该提到在打印的情况下,它会正确显示所有值。

msg = MIMEMultipart('alternative')
msg['Subject'] = 'License Checker'
me = msg['From'] = "python@mail.com"
you = msg['To'] = "me@mail.com"
for key, value in my_dic.items():
    if 'days' in value:
        html1 = 'Expiration Date : \n {}{} \n\n '.format(key,value) + '\n'
        msg.attach(MIMEText(html1, "html"))
    if 'days' not in value:
        html = """<html>
                <head></head>
                  <body>
                    <p style="color: red;">""" + key + value + """</p>
                  </body>
                </html>
                """
        msg.attach(MIMEText(html, 'html'))
server = smtplib.SMTP('a.b.c.d')
server.send_message(msg)

1 个答案:

答案 0 :(得分:0)

我不确定,但是邮件可能只希望使用一个HTML附件代替纯文本,因此请创建一个包含所有信息的HTML字符串,并仅创建一个附件。

msg = MIMEMultipart('alternative')
msg['Subject'] = 'License Checker'
me = msg['From'] = "python@mail.com"
you = msg['To'] = "me@mail.com"

html = '<html><head></head><body>'

for key, value in my_dic.items():
    if 'days' in value:
        html += 'Expiration Date : \n {}{} \n\n \n'.format(key, value)
    else:
        html += '<p style="color: red;">{}{}</p>'.format(key, value)

html +=  '</body></html>'

msg.attach(MIMEText(html, 'html'))

server = smtplib.SMTP('a.b.c.d')
server.send_message(msg)