Python正在发送电子邮件。只有一个问题是从电子邮件正文中的行的开头删除空格。在我的情况下,电子邮件正文是git diff。我想保留缩进,以便我可以复制粘贴电子邮件中的代码并使用它。
以下是我的代码的相关部分:
import cgi
import re
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from subprocess import check_output
def generate_green_bg_color(input_line):
html_green = """
<html>
<head>
<style>
p4 {
color: black;
text-align: left;
font-size: 12px;
font-family: monospace;
}
</style>
</head>
<body>
<div style="background-color:rgb(193, 255, 198)">
<p4>"""+str(input_line)+"""</br></p4>
</body>
</html>
"""
return html_green
verbose_diff = check_output(['git', 'diff', 'HEAD^..HEAD’])
verbose_diff_list = verbose_diff.split('\n’)
for each in verbose_diff_list:
escaped_each = cgi.escape(each, True)
colored_line = generate_green_bg_color(escaped_each)
msg = MIMEMultipart()
email_compatible_diff_format = MIMEText(colored_line, 'html')
msg.attach(email_compatible_diff_format)
server = smtplib.SMTP('smtp.company.com')
server.sendmail(msg['From'], email_list, msg.as_string())
server.quit()
当我打印“msg.as_string()”的值时,我可以看到空格。以下是我收到的实际电子邮件中raw_source的一部分:
<html>
<head>
<style>
p4 {
color: black;
text-align: left;
font-size: 12px;
font-family: monospace;
}
</style>
</head>
<body>
<div style="background-color:rgb(193, 255, 198)">
<p4>+ print "Hello World:%s" %colored_line</br></p4>
</body>
</html>
您可以看到如何在标记内保留空格。但在电子邮件中,这些空白已经消失了。因此,试图找到一种方法来保留电子邮件正文中的空格。
答案 0 :(得分:0)
我想出了这个问题。在这里为其他人发布解决方案&#39;参考。我只需要修改我的代码:
p4 {
color: black;
text-align: left;
font-size: 12px;
font-family: monospace;
}
到
p4 {
color: black;
text-align: left;
font-size: 12px;
font-family: monospace;
white-space: pre;
}
一切都按预期工作。