【发布时间】: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,很高兴收到您的建议。