在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 附件

Python连载56-发送带有附件正文为HTML的邮件

发送带有显示 base64 格式的附件 CSV 的邮件

HTML 格式的 Python 电子邮件 mimelib

无法在python中使用MIME发送带有pdf附件的电子邮件

Python - 发送带有多个图像附件的电子邮件