Python2.6 email.parser.parsestr не работает? - PullRequest
2 голосов
/ 21 октября 2011

Функция ниже доставляет мне проблемы без причины. Но я не могу найти ошибку. Проблема в том, что в функции 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)

1 Ответ

2 голосов
/ 21 октября 2011

parsestr ожидает как заголовки, так и тело.

Попробуйте вместо этого:

<code>from email.mime.text import MIMEText

msg = MIMEText('<html><head><meta http-equiv="Content-Type" content="text/html; CHARSET=UTF-8"></head><body><tt><pre>'
               + body
               + '
', "html")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...