如何解决发送电子邮件smtplib时将电子邮件解析为HTML
我正在借助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我想在发送电子邮件时将文本解析为HTML
问题是,如果我在message
变量中附加标签,它将按字面意义显示标签而不是解析。例如:
<b>Email : </b>sample@sample.com
解决方法
因此,在进行了几天的头脑风暴之后,我破解了一种方法,不得不使用更多的libs。但这做到了。最初,我并不灵活,但必须这样做。
下面使用的库是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())
多亏了this的答案,我才得以实现。
,您可能想使用内置的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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。