Python smtplib sendmail从文本开头删除空格

时间:2017-01-13 01:21:07

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

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

1 个答案:

答案 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;
    }

一切都按预期工作。