如您所知,python smtplib具有调试级别。当我将其设置为true param时,它将打印一些发送信息。
问题是,我试图让调试信息登录到一个文件中,但它们只是停留在我的命令控制台上。
我怎样才能把它们记录下来?
这样的信息:
connect: ('192.168.1.101', 25)
connect: (25, '192.168.1.101')
reply: '220 ESMTP on WinWebMail [3.8.1.3] ready. http://www.winwebmail.com\r\n'
reply: retcode (220); Msg: ESMTP on WinWebMail [3.8.1.3] ready. http://www.winw
ebmail.com
connect: ESMTP on WinWebMail [3.8.1.3] ready. http://www.winwebmail.com
send: 'ehlo [169.254.63.67]\r\n'
reply: '250-SIZE\r\n'
reply: '250 AUTH LOGIN\r\n'
reply: retcode (250); Msg: SIZE
AUTH LOGIN
bla bla bla bla........
前段时间,我派生了smtplib,并添加了一个logfile选项(除其他外)。如果你愿意,你可以试试。它还有一个新名字,SMTP.py。
很难清理,但由于SMTP对象似乎不提供指定调试输出位置的功能:
smtplib
直接打印到stderr
,例如smtplib.py中的823行:在运行邮件代码之前,您必须先导入
smtplib
或smtplib.stderr
monkey patch sys.stderr。我还建议用一个自定义对象修补
smtplib.stderr
,该对象有一个write
方法来包装日志代码(如果您使用的是日志库):这个question包含一些使用上下文管理器修补stderr的有用示例。
相关问题 更多 >
编程相关推荐