我试图在我的python应用程序中设置关键错误的电子邮件日志。我在尝试初始化SMTPHandler时不断遇到错误:
属性错误:'SMTPHandler'对象没有属性'credentials'
我使用的是Python 3.10,我在程序中创建了一个组件,在那里我得到了错误。
import logging
from logging.handlers import SMTPHandler
mail_handler = SMTPHandler(
mailhost='my.hosting.com',
fromaddr='admin@myapp.com',
toaddrs=['admin@myapp.com'],
subject='Application Error',
credentials=('admin@myapp.com', 'mypassword'),
secure=()
)
print(mail_handler.mailhost)
print(mail_handler.fromaddr)
print(mail_handler.toaddrs)
print(mail_handler.subject)
print(mail_handler.secure)
print(mail_handler.timeout)
print(mail_handler.credentials)
mail_handler.setLevel(logging.ERROR)
mail_handler.setFormatter(logging.Formatter('[%(asctime)s] %(levelname)s in %(module)s: %(message)s'))
我得到的print语句和回溯是:
my.hosting.com
admin@myapp.com
['admin@myapp.com']
Application Error
()
5.0
Traceback (most recent call last):
File "C:\Users\user\Documents\myapp\test.py", line 31, in <module>
print(mail_handler.credentials)
AttributeError: 'SMTPHandler' object has no attribute 'credentials'
当我使用以下代码片段检查SMTPHandler的init语句以确保我没有访问非常旧的版本(我认为凭据是在Python 2.6中添加的)时:
import inspect
signature = inspect.signature(SMTPHandler.__init__).parameters
for name, parameter in signature.items():
print(name, parameter.default, parameter.annotation, parameter.kind)`
我得到:
self <class 'inspect._empty'> <class 'inspect._empty'> POSITIONAL_OR_KEYWORD
mailhost <class 'inspect._empty'> <class 'inspect._empty'> POSITIONAL_OR_KEYWORD
fromaddr <class 'inspect._empty'> <class 'inspect._empty'> POSITIONAL_OR_KEYWORD
toaddrs <class 'inspect._empty'> <class 'inspect._empty'> POSITIONAL_OR_KEYWORD
subject <class 'inspect._empty'> <class 'inspect._empty'> POSITIONAL_OR_KEYWORD
credentials None <class 'inspect._empty'> POSITIONAL_OR_KEYWORD
secure None <class 'inspect._empty'> POSITIONAL_OR_KEYWORD
timeout 5.0 <class 'inspect._empty'> POSITIONAL_OR_KEYWORD
所以'credentials'是在初始化语句中。
有人在我的代码中看到了一些愚蠢的东西或者遇到了这个问题吗?
非常感谢!
1条答案
按热度按时间pepwfjgg1#
你的计算机上有所有标准模块的完整源代码,我只是快速浏览了一下,虽然
SMTPHandler
接受credentials
参数,但它将该参数存储在self.username
和self.password
中。