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

Change Some Colors of Email body in Python

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

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)

我不确定,但邮件可能只需要一个 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)