在python中的字符串内将值传递给html

在python中的字符串内将值传递给html,python,html,python-3.x,string,smtp,Python,Html,Python 3.x,String,Smtp,我有以下代码: def smtp_mailer(name,email): html = """\ <!DOCTYPE html> <html> <head> <title>Page Title</title> <style type="text/css"> .h1, .p, .bodycopy {color: #153643; font-family: sans-serif;} .h1 {font-size:

我有以下代码:

def smtp_mailer(name,email):
    html = """\
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
 <style type="text/css">
.h1, .p, .bodycopy {color: #153643; font-family: sans-serif;}
  .h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
</style>
</head>
<body>

<h1>This is a {name}</h1>
<p>This is a {email).</p>

</body>
</html> 
"""
    part2 = MIMEText(html, 'html')
    msg.attach(part2) 
def smtp_邮箱(姓名、电子邮件):
html=”“”\
页面标题
.h1、.p、.bodycopy{color:#153643;字体系列:无衬线;}
.h1{字体大小:33px;行高:38px;字体重量:粗体;}
这是一个{name}
这是一封{电子邮件)

""" part2=MIMEText(html,'html') 附加信息(第2部分)
当我发送SMTP邮件时,我无法在HTML中的h1标记处传递名称值,在p标记处传递电子邮件值。请帮助我。 谢谢。

您可以这样使用:

def smtp_邮箱(姓名、电子邮件):
html=f“”\
页面标题
这是一个{name}
这是一封{电子邮件}

""" 打印(html) smtp_邮件(“测试”test@test.test")
返回


页面标题
这是一个测试
这是一个test@test.test.

您可以这样使用:

def smtp_邮箱(姓名、电子邮件):
html=f“”\
页面标题
这是一个{name}
这是一封{电子邮件}

""" 打印(html) smtp_邮件(“测试”test@test.test")
返回


页面标题
这是一个测试
这是一个test@test.test.


在初始注释之后,似乎要问的主要问题是字符串包含一些大括号(即,
{}
字符)作为
元素的一部分保留在字符串中的文本,但也可以作为格式说明符的一部分进行替换

鉴于此字符串是您自己的代码,您可以将其修改为预期的值,而不是外部提供的值,在外部提供的值中,您必须找到解决此不一致性的不可避免的混乱方法,因此适当的解决方案是将打算作为文字的
{
}
更改为
{{
}
,以便在调用
format
方法后,它们将作为单个大括号输出

执行此操作后(并更正
{email)
末尾的错误字符),可以应用
格式
方法:

比如说,

html = """\
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
 <style type="text/css">
.h1, .p, .bodycopy {{color: #153643; font-family: sans-serif;}}
  .h1 {{font-size: 33px; line-height: 38px; font-weight: bold;}}
</style>
</head>
<body>

<h1>This is a {name}</h1>
<p>This is a {email}.</p>

</body>
</html> 
""".format(name="John", email="test@example.com")

print(html)
html=”“”\
页面标题
.h1、.p、.bodycopy{{颜色:#153643;字体系列:无衬线;}
.h1{{字体大小:33px;行高:38px;字体重量:粗体;}
这是一个{name}
这是一封{电子邮件}

“”。格式(name=“John”,电子邮件=”test@example.com") 打印(html)
给出:

...
.h1, .p, .bodycopy {color: #153643; font-family: sans-serif;}
  .h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
...
<h1>This is a John</h1>
<p>This is a test@example.com.</p>
...
。。。
.h1、.p、.bodycopy{color:#153643;字体系列:无衬线;}
.h1{字体大小:33px;行高:38px;字体重量:粗体;}
...
这是约翰
这是一个test@example.com.

...

正如其他人所提到的(在Python 3中)您也可以使用
f
字符串表示法,而不是显式调用
format
方法,前提是在名为
name
email
的变量中已经有要替换的值。在任何情况下,您仍然需要在格式化之前将文本大括号加倍。

注释,似乎要问的主要问题是,字符串包含一些大括号(即,
{}
字符),这些大括号打算作为
元素的一部分保留在字符串中,但也有一些大括号打算作为格式说明符的一部分替换

鉴于此字符串是您自己的代码,您可以将其修改为预期的值,而不是外部提供的值,在外部提供的值中,您必须找到解决此不一致性的不可避免的混乱方法,因此适当的解决方案是将打算作为文字的
{
}
更改为
{{
}
,以便在调用
format
方法后,它们将作为单个大括号输出

执行此操作后(并更正
{email)
末尾的错误字符),可以应用
格式
方法:

比如说,

html = """\
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
 <style type="text/css">
.h1, .p, .bodycopy {{color: #153643; font-family: sans-serif;}}
  .h1 {{font-size: 33px; line-height: 38px; font-weight: bold;}}
</style>
</head>
<body>

<h1>This is a {name}</h1>
<p>This is a {email}.</p>

</body>
</html> 
""".format(name="John", email="test@example.com")

print(html)
html=”“”\
页面标题
.h1、.p、.bodycopy{{颜色:#153643;字体系列:无衬线;}
.h1{{字体大小:33px;行高:38px;字体重量:粗体;}
这是一个{name}
这是一封{电子邮件}

“”。格式(name=“John”,电子邮件=”test@example.com") 打印(html)
给出:

...
.h1, .p, .bodycopy {color: #153643; font-family: sans-serif;}
  .h1 {font-size: 33px; line-height: 38px; font-weight: bold;}
...
<h1>This is a John</h1>
<p>This is a test@example.com.</p>
...
。。。
.h1、.p、.bodycopy{color:#153643;字体系列:无衬线;}
.h1{字体大小:33px;行高:38px;字体重量:粗体;}
...
这是约翰
这是一个test@example.com.

...

正如其他人所提到的(在Python 3中)如果名为
name
email
的变量中已有要替换的值,则也可以使用
f
字符串表示法,而不是显式调用
format
方法。在任何情况下,在格式化之前仍需要将文本大括号加倍。

尝试替换值使用
html.format(name=..,email=..)
您可能在开始时忘记了f来插值“text{name}”,但我的html中有这些内联CSS,它也要求使用格式“”。标题{宽度:100%;背景颜色:#3B5998;高度:35px;页边顶部:0;}。样式1{页边右侧:38px;}.style2{宽度:100%;背景色:3B5998;高度:35px;}''@alaniwi@anuragkumaranu好的,我现在理解了这个问题。请查看我的答案。尝试使用
html.format(name=..,email=..)
替换值。您可能在开始时忘记了使用f来插值“text{name}”“但我的HTML中有这些内联CSS,它也要求使用格式”“。标题{宽度:100%;背景色:#3B5998;高度:35px;页边顶部:0;}。样式1{页边右侧:38px;}。样式2{宽度:100%;背景色:#3B5998;高度:35px;}” ''' @alaniwi@anuragkumaranu好的,我现在明白这个问题了。请看我的答案。但是我的HTML中有这些内联CSS,它也要求使用格式“”