我试图创建一个用CSS和所有内容通过电子邮件发送HTML文件的功能。我试图弄清楚如何将变量传递到我的HTML中。 HTML代码位于名为index.html
的单独文件中文件1 app.py
def mailer2(addr_from,addr_to,title,password):
# Define SMTP email server details
smtp_server = 'smtp.gmail.com'
smtp_user = addr_from
smtp_pass = password
# Construct email
msg = MIMEMultipart('alternative')
msg['To'] = addr_to
msg['From'] = addr_from
msg['Subject'] = 'Test Email From Me'
html = urllib.urlopen('index.html').read().format(first_header = 'hi')
part2 = MIMEText(html, 'html')
msg.attach(part2)
s = smtplib.SMTP(smtp_server,587)
s.starttls()
s.login(smtp_user,smtp_pass)
s.sendmail(addr_from, addr_to, msg.as_string())
s.quit()
在我的HTML代码中,
<div class="contentEditable" >
<h2>{first_header}</h2>
我希望hi
填写first_header
的位置,但我会得到:
html = urllib.urlopen('index.html').read().format(first_header='goodbye') KeyError: 'padding'
不确定这里的问题是什么。有人可以帮帮我吗?
答案 0 :(得分:0)
尝试这种方式:
html = urllib.urlopen('index.html').read().format('hi')
<div class="contentEditable" >
<h2>{}</h2>
答案 1 :(得分:0)
这不使用urllib,但会解决您正在寻找的问题。
# Documentation of Jinja http://jinja.pocoo.org/docs/2.10/api/#high-level-api
from jinja2 import Environment, FileSystemLoader
import os
env = Environment(loader=FileSystemLoader(os.getcwd()))
template = env.get_template('index.html')
message = 'hi'
html = template.render(first_header=message)
你的索引html文件应该有:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, shrink-to-fit=no, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
</head>
<body>
<div class="contentEditable" >
<h2>{{first_header}}</h2>
</body>
</html>