Функция ниже доставляет мне проблемы без причины. Но я не могу найти ошибку. Проблема в том, что в функции parsestr (), когда я помещаю в качестве аргумента буквальную строку типа «Hello world!», Отправляет электронное письмо с этой строкой. Но, и вот сюрприз, если я добавлю переменную body , которая также является строкой, письмо будет иметь пустое тело. Я использую python2.6, и .self.parser является объектом email.parser.Parser ().
Спасибо!
def send_mail(self, subject, body):
print "Sending mail",subject
s = smtplib.SMTP()
s.connect(myserver, myport)
s.login(myuser,mypasswd)
s.starttls()
s.ehlo_or_helo_if_needed()
msg = self.parser.parsestr(body)
print msg.as_string()
msg["From"] = self.me
msg["To"] = self.you
msg["Subject"] = subject
msg["orig-date"] = email.utils.formatdate()
msg["Date"] = email.utils.formatdate()
log.debug("Sending email")
s.sendmail(self.me, [self.you], msg.as_string())
Вот функция, вызывающая send_mail. Это тривиально:
def check_error_directory(self, directory):
"""
Send an email if some file of the error_directory is not 0
"""
if(not os.path.exists(directory)):
log.warning("notify_error_files: The directory %s does not exist",directory)
else:
filesize = 0
body = "Directory: %s\n" % directory
problem = False
for fn in os.listdir(directory):
fnc = os.path.join(directory, fn)
filesize = os.path.getsize(fnc)
if(filesize != 0):
body += "%s: size %s\n" % (fn, filesize)
problem = True
if(problem):
subject = "Possible error in %s" % (directory)
self.send_mail(subject, body)