我想使用制表包来生成两个HTML表,但是我只能生成一个表并发送邮件。
是否可以在通过smtplib和电子邮件发送的邮件中放置多个html表?每当我使用attach()做多件事时,它只会添加第一件事。
text = """
Hello, Friend.
Here is your data:
{table}
Regards,
Me
"""
html = """
<html>
<body>
<p>Hello, Friend.</p>
<p>Here is your data:</p>
{table}
<p>Regards,</p>
<p>Me</p>
</body>
</html>
"""
with open('input.csv') as input_file:
reader = csv.reader(input_file)
data = list(reader)
text = text.format(table=tabulate(data, headers="firstrow", tablefmt="grid"))
html = html.format(table=tabulate(data, headers="firstrow", tablefmt="html"))
message = MIMEMultipart(
"alternative", None, [MIMEText(text), MIMEText(html,'html')]
)
答案 0 :(得分:1)
是的。首先,您必须更改要替换为表格的字段数:
text = """ [...] {table1} {table2} [...] """
然后,您必须传递内容以将其格式化为kwargs:
text = text.format(table1=tabulate(data, headers="firstrow", tablefmt="grid"),
table2=your_new_table_tabulation)
您可以为html做
Python中的字符串格式不是附件,而是将内容替换为预格式化的字段。您可以根据需要替换任意多个字段,并输入所需的名称和所需的内容。然后,当您发送电子邮件时,您将发送一个普通的HTML文件,并将表格呈现为HTML /文本
我建议您签出https://docs.python.org/3/library/string.html#string.Formatter.format
适用于Python 3.7版。您几乎可以在线获得所有Python版本。