user.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from sender.smtp import Sender
  2. from mailbox.imap import Imap
  3. from .db import redis
  4. from .configure import conf
  5. from flask_login import UserMixin
  6. class User(UserMixin):
  7. def __init__(self, username, passwd=None):
  8. self.id = username
  9. self.username = username
  10. if passwd:
  11. redis.hmset(f"user:{username}", {"passwd": passwd})
  12. def check_login(self):
  13. imap = Imap(user=conf["IMAP_USERNAME"].format(self.username),
  14. passwd=conf["IMAP_PASSWD"].format(self.passwd),
  15. host=conf["IMAP_HOST"],
  16. port=conf["IMAP_PORT"],
  17. ssl=conf["IMAP_SSL"],
  18. start_ssl=conf["IMAP_START_SSL"])
  19. sender = Sender(user=conf["SMTP_USERNAME"].format(self.username),
  20. passwd=conf["SMTP_PASSWD"].format(self.passwd),
  21. host=conf["SMTP_HOST"],
  22. port=conf["SMTP_PORT"],
  23. ssl=conf["SMTP_SSL"],
  24. start_ssl=conf["SMTP_START_SSL"],
  25. debug=False)
  26. if not imap.check_login():
  27. return False
  28. return sender.check_login()
  29. @property
  30. def info(self):
  31. return redis.hgetall(f"user:{self.username}")
  32. @property
  33. def passwd(self):
  34. return self.info.get("passwd", "123456789")