【发布时间】:2019-09-15 05:36:58
【问题描述】:
我正在尝试使用 MIMEMultipart 更改电子邮件正文中某些文本的颜色。 此 python 代码的目的是在某些情况下更改颜色。所以如果字典中有“天”这个词,那么颜色应该是某种东西,如果不是,颜色应该是黑色。但不幸的是,它只发送字典的最后一个值,而不是所有值。 应该提到,在打印的情况下,它会正确显示所有值。
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)
【问题讨论】:
-
如果没有 smtp 服务器,我无法复制错误。我在循环之后做了
print(msg),看起来它考虑了字典的所有值。您可以编辑问题以显示正在发送的消息吗? -
我对 print(msg) 也没有任何问题。问题出在发送邮件时。
-
首先在
for-loop 中创建一个包含所有信息的html,然后在for-loop 之后将此单个HTML 附加到邮件中。 -
@furas 请让我举例说明一下。
-
你不知道如何连接字符串吗?
"<p>...</p>" + "<p>...</p>"?或html = html + "<p>...</p>"?
标签: python html python-3.x email html-email