python - 如何在 html 中添加动态内容以在 Python 中发送邮件
问题描述
我正在使用 python 中的 'smtplib' 发送带有 html 内容的邮件,我想向该 html 添加动态内容。
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
message = MIMEMultipart("alternative")
message["Subject"] = "Error Notification"
message["From"] = sender
message["To"] = sender
# Create the plain-text and HTML version of your message
html = """\
<html>
<body>
<p>Hi,<br>
<span>Something went wrong !</span><br>
</p>
</body>
</html>
"""
part1 = MIMEText(html, "html")
# Add HTML/plain-text parts to MIMEMultipart message
message.attach(part1)
try:
smtpObj = smtplib.SMTP('localhost')
smtpObj.sendmail(sender, receivers, message.as_string())
print "Successfully sent email"
except smtplib.SMTPException:
print "Error: unable to send email"
除了上面的 html,我还需要在 body 标记中包含一些动态内容
解决方案
因为这是 Python,你可以用字符串做一些非常棒的事情。只需用特殊名称命名 html 的某些区域,然后使用replace方法将它们替换为您想要的任何值。
html = """\
<html>
<body>
<p>Hi, $(name)<br>
<span> $(error) </span><br>
</p>
</body>
</html>
"""
html = html.replace("$(name)", "John")
html = html.replace("$(error)", "Something went wrong!")
print(html)
推荐阅读
- python - 来自数组列表的python pandas数据框
- javascript - 如何从 JS Axios 请求调用 PHP 页面上的函数
- azure - 将文件下载到 Azure VM
- vue.js - 在 vue2-google-map 中拖动后如何获取标记的坐标
- c++ - 错误 MSB3073: :VCEnd" 以代码 255 退出
- python - PC 将 Python 固定到任务栏而不是 Anaconda Navigator
- selenium - 无法在剑道网格上执行点击
- c# - 如何解决“错误 MSB3188:程序集 ... 必须经过强签名才能被标记为先决条件。”
- highcharts - Highchart 热图删除图例切换上的空行
- python - 无法使用烧瓶服务器在 IIS 上运行破折号应用程序