我正在尝试使用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)
答案 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)