fix(transfer): enable background polling (remove return), add 2-day date filter to both run and check_transfer
This commit is contained in:
parent
7247cd518a
commit
e70110e520
@ -154,20 +154,33 @@ class TransferGateway(Gateway):
|
||||
|
||||
async def run(self, app):
|
||||
"""后台轮询邮箱,匹配转账码并完成充值入账"""
|
||||
debug(f'mail check loop will starting')
|
||||
from datetime import datetime, timedelta
|
||||
from email.utils import parsedate_to_datetime
|
||||
debug('mail check loop starting')
|
||||
self.running = True
|
||||
return
|
||||
while self.running:
|
||||
debug(f'mail check loop running')
|
||||
debug('mail check loop running')
|
||||
try:
|
||||
ec = EmailClient(self.pop3server, self.email, self.password)
|
||||
count, _ = ec.stat()
|
||||
if count == 0:
|
||||
await asyncio.sleep(30)
|
||||
continue
|
||||
cutoff = datetime.now() - timedelta(days=2)
|
||||
for i in range(count, 0, -1):
|
||||
try:
|
||||
mail = ec.get_mail(i)
|
||||
|
||||
mail_date_str = getattr(mail, 'date', None)
|
||||
if mail_date_str:
|
||||
try:
|
||||
mail_date = parsedate_to_datetime(mail_date_str)
|
||||
if mail_date < cutoff:
|
||||
continue
|
||||
except:
|
||||
continue
|
||||
else:
|
||||
continue
|
||||
if mail.mailfrom != '95555@message.cmbchina.com':
|
||||
debug(f'ignored mail from {mail.mailfrom=}')
|
||||
continue
|
||||
@ -258,10 +271,13 @@ class TransferGateway(Gateway):
|
||||
mail_date = parsedate_to_datetime(mail_date_str)
|
||||
if mail_date < cutoff:
|
||||
skip_date = True
|
||||
except:
|
||||
pass
|
||||
except Exception as de:
|
||||
debug('mail[' + idx + '] date parse error: ' + str(mail_date_str) + ' -> ' + str(de))
|
||||
else:
|
||||
debug('mail[' + idx + '] no date header, skipping date filter')
|
||||
skip_date = True # 没有日期头的邮件跳过
|
||||
if skip_date:
|
||||
debug('mail[' + idx + '] date=' + str(mail_date_str) + ' older than 2 days, skip')
|
||||
debug('mail[' + idx + '] date=' + str(mail_date_str) + ' older than 2 days or no date, skip')
|
||||
continue
|
||||
|
||||
from_addr = getattr(mail, 'mailfrom', '?')
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user