web-dev-qa-db-ja.com

Python HTMLメールの変数Python

Pythonで送信するHTMLメールに変数を挿入するにはどうすればよいですか?送信しようとしている変数はcodeです。以下は私がこれまでに持っているものです。

text = "We Says Thanks!"
html = """\
<html>
  <head></head>
  <body>
    <p>Thank you for being a loyal customer.<br>
       Here is your unique code to unlock exclusive content:<br>
       <br><br><h1><% print code %></h1><br>
       <img src="http://domain.com/footer.jpg">
    </p>
  </body>
</html>
"""
11
David Vasandani

使用する - "formatstring".format

code = "We Says Thanks!"
html = """\
<html>
  <head></head>
  <body>
    <p>Thank you for being a loyal customer.<br>
       Here is your unique code to unlock exclusive content:<br>
       <br><br><h1>{code}</h1><br>
       <img src="http://domain.com/footer.jpg">
    </p>
  </body>
</html>
""".format(code=code)

多数の変数を代入していることに気付いた場合は、次を使用できます。

.format(**locals())
30
Eric

別の方法は テンプレート を使用することです:

>>> from string import Template
>>> html = '''\
<html>
  <head></head>
  <body>
    <p>Thank you for being a loyal customer.<br>
       Here is your unique code to unlock exclusive content:<br>
       <br><br><h1>$code</h1><br>
       <img src="http://domain.com/footer.jpg">
    </p>
  </body>
</html>
'''
>>> s = Template(html).safe_substitute(code="We Says Thanks!")
>>> print(s)
<html>
  <head></head>
  <body>
    <p>Thank you for being a loyal customer.<br>
       Here is your unique code to unlock exclusive content:<br>
       <br><br><h1>We Says Thanks!</h1><br>
       <img src="http://domain.com/footer.jpg">
    </p>
  </body>
</html>

substituteではなくsafe_substituteを使用したことに注意してください。提供された辞書にないプレースホルダーがあるかのように、substituteValueError: Invalid placeholder in stringを発生させます。同じ問題が string formatting にもあります。

12
ovgolovin

pythonの文字列操作を使用する: http://docs.python.org/2/library/stdtypes.html#string-formatting

一般に、%演算子は変数を文字列に入れるために使用されます。%iは整数、%sは文字列、%fは浮動小数点数です。注:上記のリンクでも説明されている別の書式設定タイプ(.format)もあります。これにより、以下に示すものよりも少しエレガントなdictまたはリストを渡すことができます。文字列に入れたい変数が100個ある場合、%演算子が混乱するため、長期的にはこれを使用する必要があります。 dictの使用(私の最後の例)はちょっとこれを否定しますが。

code_str = "super duper heading"
html = "<h1>%s</h1>" % code_str
# <h1>super duper heading</h1>
code_nr = 42
html = "<h1>%i</h1>" % code_nr
# <h1>42</h1>

html = "<h1>%s %i</h1>" % (code_str, code_nr)
# <h1>super duper heading 42</h1>

html = "%(my_str)s %(my_nr)d" %  {"my_str": code_str, "my_nr": code_nr}
# <h1>super duper heading 42</h1>

これは非常に基本的で、プリミティブ型でのみ機能します。dict、リスト、および可能なオブジェクトを保存できるようにする場合は、それらをjsonsにcobvertすることをお勧めします http://docs.python.org/2/library /json.html および https://stackoverflow.com/questions/4759634/python-json-tutorial は良いインスピレーションの源です

お役に立てれば

1
jcr