代码如下:
def mail_login(self):
email_account = "****"
# 授权码
password = "****"
pop3_server = "pop.163.com"
try:
# 连接到POP3服务器:
self.server = poplib.POP3_SSL(pop3_server)
self.server.set_debuglevel(1)
self.server.user(email_account)
self.server.pass_(password)
except Exception as e:
log_print(e)
log_print("Invalid credentials")
else:
log_print(self.server.getwelcome().decode("utf-8"))
assert self.server is not None
self.server.quit()
出现如下报错:
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/apscheduler/executors/base.py", line 125, in run_job
retval = job.func(*job.args, **job.kwargs)
File "/root/app/***.py", line 227, in mail_monitor_func
raise e
File "/root/app/***.py", line 222, in mail_monitor_func
alarm.entrance(url)
File "/root/app/***.py", line 54, in entrance
self.mail_login()
File "/root/app/***.py", line 34, in mail_login
self.server.pass_(password)
File "/usr/local/lib/python3.7/poplib.py", line 213, in pass_
return self._shortcmd('PASS %s' % pswd)
File "/usr/local/lib/python3.7/poplib.py", line 176, in _shortcmd
return self._getresp()
File "/usr/local/lib/python3.7/poplib.py", line 149, in _getresp
resp, o = self._getline()
File "/usr/local/lib/python3.7/poplib.py", line 133, in _getline
if not line: raise error_proto('-ERR EOF')
poplib.error_proto: -ERR EOF
根据报错信息,对登录加try--except,系统进入异常“Invalid credentials”
问题原因:self.server.pass_(password)提供的是标准的邮箱密码
解决方案:self.server.pass_(password)要给邮箱授权码,邮箱设置中可设置pop3的授权码