Python envoie des courriels très bien. Il n'y a qu'un seul problème où il supprime les espaces blancs du début des lignes dans le corps de l'e-mail. Dans mon cas, le corps de l'email est le diff de git. Je veux préserver l'indentation de sorte que je peux simplement copier coller le code de l'email et l'employer.Python smtplib sendmail supprime les espaces à partir du début du texte
Voici la partie pertinente de mon code:
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()
Lorsque j'imprime la valeur de « msg.as_string() », je peux voir les espaces. Voici une partie de raw_source de l'e-mail réelle reçue:
<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>
Vous pouvez voir comment l'whitspace est préservée dans la balise. Mais dans l'email ces espaces sont partis. Donc, essayer de trouver un moyen de préserver les espaces dans le corps de l'e-mail.
Quel est votre client de messagerie? Avez-vous essayé d'en utiliser un autre pour voir ce qui se passe? – mmenschig