【问题标题】:Parse email message as HTML while sending email smtplib在发送电子邮件 smtplib 时将电子邮件消息解析为 HTML
【发布时间】:2020-08-28 05:23:29
【问题描述】:

我在 pandas 库的帮助下发送批量电子邮件,我面临一个问题,我想将正文文本解析为 HTML,因为我想使用一些 HTML 标签。以下是相同的代码。

    message = """\
Dear Student,
    Following are your login details,
            Email     {0}
            Password  {1}
    You may log in via URL mail.sample.com
    Do not copy/paste the password.

Regards,
Admin
        """.format(student_email,student_password)
    full_email = ("From: {0} <{1}>\n"
                  "To: {2}\n"
                  "Subject: {3}\n\n"
                  "{4}"
                  .format(self_name, self_email, email, subject, message))

我找不到任何其他代码与我目前使用的库相同,如果可能的话,我想只使用这些库,即pandassmtplib

如果有多余的问题,请道歉

TL;DR 我想在发送电子邮件时将文本解析为 HTML

问题是,如果我在message 变量中附加标签,它实际上会显示标签而不是解析。例如:

 <b>Email : </b>sample@sample.com

【问题讨论】:

标签: python pandas smtplib


【解决方案1】:

您可能希望使用内置的email 包,而不是手动构建电子邮件。这将允许您将内容类型设置为 text/html:

from email.message import EmailMessage

msg = EmailMessage()
msg.set_content(html_message, subtype="html")
msg['Subject'] = subject
msg['From'] = '{0} <{1}>'.format(self_name, self.email)
msg['To'] = email

【讨论】:

  • 您好 sabik,如果您将您的代码修改为我的代码,我将不胜感激,因为我无法弄清楚,谢谢。
【解决方案2】:

所以经过几天的头脑风暴,我找到了一种方法来做到这一点,我不得不使用更多的库。但这就是工作。最初,我不灵活,但不得不这样做。

除了pandassmtplib 下面是我使用的库。

from email.mime.text import MIMEText
from jinja2 import Environment

这里做了一个权衡,我完全删除了full_email变量,而不是它,完成了以下操作。

message = """\
<p>Dear Student,<p>
<span>Following are your login details,</span><br/><br/>
&nbsp;&nbsp;&nbsp;&nbsp;<b>Email</b>      {0} <br/>
&nbsp;&nbsp;&nbsp;&nbsp;<b>Password</b>  {1} </br><br/>
&nbsp;&nbsp;&nbsp;&nbsp;You may login via URL sample.mail.com<br/>
&nbsp;&nbsp;&nbsp;&nbsp;Do not copy/paste the password.<br/>
<br/><br/>

Regards,<br/>
        """.format(student_email,student_password)
    msg = MIMEText(
        Environment().from_string(message).render(
            title='Hello World!'
        ), "html"
    )
    msg['Subject'] = subject
    msg['From'] = from
    msg['To'] = email

为了发送它。

server.sendmail(email,[email],msg.as_string())

感谢this的回答,我做到了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-19
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    相关资源
    最近更新 更多