结合HTML和Python发送电子邮件

时间:2018-01-04 15:53:41

标签: python html email

我正在使用一个脚本从文本文件中提取数据,处理Python脚本并从Python发送电子邮件。 它有一个内置的HTML,以便发送的电子邮件具有我想要的格式。 我的问题是:有没有办法将Python变量插入到我作为模板的HTML中?我附上我正在使用的代码,看看是否有人可以帮助我。谢谢。

public class airlineModel
    {
        public ObjectId Id { get; set; }

        [BsonElement("airline")]
        public List<airlinedata> airline { get; set; }
    }



public class airlinedata
{
    [BsonElement("airlineID")]
    public int airlineID { get; set; }
    [BsonElement("airlineName")]
    public string airlineName { get; set; }
    [BsonElement("airlineAlias")]
    public string airlineAlias { get; set; }
   [BsonElement("airlineIATACode")]
    public string airlineIATACode { get; set; }
    [BsonElement("airlineICAOCode")]
    public string airlineICAOCode { get; set; }
    [BsonElement("airlineCallsign")]
    public string airlineCallsign { get; set; }
    [BsonElement("airlineBaseCountry")]
    public string airlineBaseCountry { get; set; }
    [BsonElement("airlineActiveIndicator")]
    public string airlineActiveIndicator { get; set; }
}

1 个答案:

答案 0 :(得分:1)

一个简单的解决方案是使用字符串模板。它们是安全的并且是为此目的而设计的。在此代码段中,我们使用string.Template构造函数创建包含所有html代码的模板,然后当我们在模板中指定占位符的值时,.substitute()方法返回我们的html代码。

from string import Template

html_template = Template("""My name is $name""")
html = html_template.substitute(name='Pepito')

或者,对于Python 3.6+,f字符串也不一定是坏的。它们基本上允许您在字符串中执行任意python代码。在这种情况下,我们提前定义了某种名称,我们通过在前面附加f来指定字符串是f-string,并且花括号中的所有内容都作为原始python代码执行 - 在这种情况下替换{ name},带有name变量的内容。

name = 'Pepito'
html = f"""My name is {name}"""

这些方法优于普通字符串格式化的一个优点是,在较长的html文档中,您可能会多次重用每个变量,并且可以方便地通过名称调用它们而不是尝试回忆确切的顺序你将它们放入你正在调用的模板字符串中。如果您决定更改html代码的样子,这将使其在未来更易于维护。