smtplib
печатает непосредственно на stderr
, например, строка 823 в smtplib.py:
print>>stderr, 'connect fail:', host
Вам придется либо обезьяньим патчем sys.stderr до васimport smtplib
или smtplib.stderr
до того, как вы запустите свой почтовый код.
Я также мог бы предложить исправить smtplib.stderr
с помощью пользовательского объекта, который имеет write
метод для переноса кода регистрации (если вы используете библиотеку журналов, например):
import logging
import smtp
class StderrLogger(object):
def __init__(self):
self.logger = logging.getLogger('mail')
def write(self, message):
self.logger.debug(message)
org_stderr = smtp.stderr
smtp.stderr = StderrLogger()
# do your smtp stuff
smtp.stderr = org_stderr
Этот вопрос содержит несколько полезных примеров исправления stderr с помощью менеджеров контекста.