我刚刚在几小时前发布了这个问题:Is there any way to use variables in multiline string in Python?
现在我正在使用评论中建议的以下代码:
from string import Template
import textwrap
...
try:
subject_mail = {
'subject': 'Test'
}
content = Template("""From: fromname <fromemail>
To: toname <toemail>
MIME-Version: 1.0
Content-type: text/html
Subject: ${subject}
This is an e-mail message to be sent in HTML format
<b>This is HTML message.</b>
<h1>This is headline.</h1>
""")
result = content.safe_substitute(subject_mail)
result = textwrap.dedent(result)
...
print(result)
mail.sendmail('fromemail', 'toemail', result)
奇怪的是,如果我不替换任何东西(如果我在字符串中写入主题),一切正常。 如果我替换上面的主题,它打印出来确定。但是,在我的电子邮件(gmail)中,我得到了这个:
from: fromname <fromemail> To: toname MIME-Version: 1.0 Content-type: text/html Subject: Test! <toemail>
to:
Cco: toemail
Subject:
没有主题。我不明白。我错过了什么?
答案 0 :(得分:1)
有人发布了立即删除的解决方案:
content = Template("""\
From: fromname <fromemail>
To: toname <toemail>
MIME-Version: 1.0
Content-type: text/html
Subject: ${subject}
This is an e-mail message to be sent in HTML format
<b>This is HTML message.</b>
<h1>This is headline.</h1>
""")
右缩进。 现在工作正常!