Python smtplib sendmail删除文本开头的空白

Python smtplib sendmail删除文本开头的空白,python,tabs,sendmail,Python,Tabs,Sendmail,Python正在发送电子邮件。只有一个问题是,它会删除电子邮件正文中行开头的空格。在我的例子中,电子邮件主体是git diff。我想保留缩进,这样我就可以从电子邮件中复制粘贴代码并使用它 以下是我的代码的相关部分: import cgi import re import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from subprocess import

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()
导入cgi
进口稀土
导入smtplib
从email.mime.text导入MIMEText
从email.mime.multipart导入MIMEMultipart
从子流程导入检查输出
def生成\绿色\背景\颜色(输入\行):
html_green=“”
p4{
颜色:黑色;
文本对齐:左对齐;
字体大小:12px;
字体系列:monospace;
}
“+str(输入线)+”
""" 返回绿色 verbose_diff=检查输出(['git','diff','HEAD^..HEAD']) 详细差异列表=详细差异拆分('\n') 对于详细差异列表中的每个: 转义\u each=cgi.escape(each,True) 彩色线条=生成绿色背景颜色(每个) msg=MIMEMultipart() email\u compatible\u diff\u format=MIMEText(彩色线,'html') 附加信息(电子邮件兼容格式) 服务器=smtplib.SMTP('SMTP.company.com') server.sendmail(msg['From'],email\u list,msg.as\u string()) server.quit()
当我打印“msg.as_string()”的值时,我可以看到空白。以下是我收到的实际电子邮件的原始来源的一部分:

  <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 &quot;Hello World:%s&quot; %colored_line</br></p4>
    </body>
  </html>

p4{
颜色:黑色;
文本对齐:左对齐;
字体大小:12px;
字体系列:monospace;
}
+打印“Hello World:%s”%s\u行

您可以看到whitspace是如何保存在标记中的。但在电子邮件中,这些空白已经消失了。因此,我们试图找到一种在电子邮件正文中保留空白的方法

我解决了这个问题。在此处发布解决方案供其他人参考。我只需要从以下位置修改代码:

p4 {
    color: black;
    text-align: left;
    font-size: 12px;
    font-family: monospace;
    }


一切都如期进行

我解决了这个问题。在此处发布解决方案供其他人参考。我只需要从以下位置修改代码:

p4 {
    color: black;
    text-align: left;
    font-size: 12px;
    font-family: monospace;
    }


一切都如期进行

你的电子邮件客户端是什么?你试过用另一个来看看会发生什么吗?你的电子邮件客户端是什么?你试过用另一个来看看会发生什么吗?