发送电子邮件 smtplib 时将电子邮件消息解析为 HTML
Parse email message as HTML while sending email smtplib
我在 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))
我找不到任何其他代码与我目前正在使用的库相同,如果可能的话,我只想使用这些库,即 pandas
和 smtplib
.
抱歉问题多余
TL;DR I want to parse text to HTML while sending the email
问题是,如果我在 message
变量中附加标签,它会按字面意思显示标签而不是解析。例如:
<b>Email : </b>sample@sample.com
您可能想使用 built-in email
包,而不是手动构建电子邮件。这将使您可以将 content-type 设置为 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
经过几天的集思广益,我找到了一种方法来做到这一点,我不得不使用更多的库。但这就是工作。起初,我不灵活,但不得不这样做。
连同 pandas
和 smtplib
下面是我使用过的库。
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/>
<b>Email</b> {0} <br/>
<b>Password</b> {1} </br><br/>
You may login via URL sample.mail.com<br/>
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())
多亏了的回答,我才得以实现。
我在 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))
我找不到任何其他代码与我目前正在使用的库相同,如果可能的话,我只想使用这些库,即 pandas
和 smtplib
.
抱歉问题多余
TL;DR I want to parse text to HTML while sending the email
问题是,如果我在 message
变量中附加标签,它会按字面意思显示标签而不是解析。例如:
<b>Email : </b>sample@sample.com
您可能想使用 built-in email
包,而不是手动构建电子邮件。这将使您可以将 content-type 设置为 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
经过几天的集思广益,我找到了一种方法来做到这一点,我不得不使用更多的库。但这就是工作。起初,我不灵活,但不得不这样做。
连同 pandas
和 smtplib
下面是我使用过的库。
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/>
<b>Email</b> {0} <br/>
<b>Password</b> {1} </br><br/>
You may login via URL sample.mail.com<br/>
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())
多亏了