在Python中发送带有颜色格式的电子邮件[重复]
Posted
技术标签:
【中文标题】在Python中发送带有颜色格式的电子邮件[重复]【英文标题】:Sending email with color formatting in Python [duplicate] 【发布时间】:2017-11-03 12:05:18 【问题描述】:我有以下 Python 代码,用于从文件 filename
的内容向我的 ID 发送电子邮件。我正在尝试发送带有颜色格式文本的电子邮件。
有什么想法请指教。
def ps_Mail():
filename = "/tmp/ps_msg"
f = file(filename)
if os.path.exists(filename) and os.path.getsize(filename) > 0:
mailp = Popen(["/usr/sbin/sendmail", "-t", "-oi"], stdin=PIPE)
msg = MIMEMultipart('alternative')
msg['To'] = "karn@abc.com"
msg['Subject'] = "Uhh!! Unsafe rm process Seen"
msg['From'] = "psCheck@abc.com"
msg1 = MIMEText(f.read(), 'text')
msg.attach(msg1)
mailp.communicate(msg.as_string())
ps_Mail()
【问题讨论】:
既然有smtplib
模块,为什么还要使用Popen()
来驱动sendmail?如果尚未完成,则必须将文本包装成 html,然后设置正确的 MIMEText
属性
您将要使用 HTML 来声明颜色。请参阅this related question 了解如何执行此操作。例如,如果您希望将所有文件 f
作为一种颜色,请尝试:msg1 = MIMEText("<p style=\"color:red\">"+f.read()+"</p>", 'html')
接受的问题@DanielR.Livingston 链接到的答案也使用smtplib
,正如我所建议的那样。
@Anthon,由于一些跨平台检查和限制,我正在使用 Popen,尽管 smtplib
我明白如果适合环境,我会更适合。此外,我不想使用 HTML 作为它只是一个文本消息来传递电子邮件。
@DanielR.Livingston,很高兴收到您的建议。
【参考方案1】:
这是我用来发送 HTML 电子邮件的 sn-p。
另请阅读this
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
msg = MIMEMultipart('alternative')
msg['Subject'] = "Link"
msg['From'] = "my@email.com"
msg['To'] = "your@email.com"
text = "Hello World!"
html = """\
<html>
<head></head>
<body>
<p style="color: red;">Hello World!</p>
</body>
</html>
"""
part1 = MIMEText(text, 'plain')
part2 = MIMEText(html, 'html')
msg.attach(part1) # text must be the first one
msg.attach(part2) # html must be the last one
s = smtplib.SMTP('localhost')
s.sendmail(me, you, msg.as_string())
s.quit()
【讨论】:
Szabolcs ,您的代码看起来不错,即使我已经在我的另一个代码中使用了 HTML 格式,但在这里我不想要它的 HTML 国家。它只是发送纯文本。 AFAIK 纯文本电子邮件不支持颜色。以上是关于在Python中发送带有颜色格式的电子邮件[重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 Python 中发送带有 HTML+plain_text 电子邮件的 PDF 附件