将Python变量传递给单独的HTML文件

时间:2018-03-07 15:43:07

标签: python html email urllib

我试图创建一个用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'

不确定这里的问题是什么。有人可以帮帮我吗?

2 个答案:

答案 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>