email.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #*************************************************************************
  2. # Copyright © 2015 JiangLin. All rights reserved.
  3. # File Name: email.py
  4. # Author:JiangLin
  5. # Mail:xiyang0807@gmail.com
  6. # Created Time: 2015-11-27 21:59:02
  7. #*************************************************************************
  8. #!/usr/bin/env python
  9. # -*- coding=UTF-8 -*-
  10. from flask_mail import Message
  11. from threading import Thread
  12. from itsdangerous import URLSafeTimedSerializer
  13. from flask import current_app
  14. from maple import app
  15. from maple import mail
  16. def send_async_email(app, msg):
  17. with app.app_context():
  18. mail.send(msg)
  19. def email_send(to, template, subject):
  20. msg = Message(subject,
  21. recipients=[to],
  22. html=template)
  23. thr = Thread(target=send_async_email, args=[app, msg])
  24. thr.start()
  25. def email_token(email):
  26. config = current_app.config
  27. serializer = URLSafeTimedSerializer(config['SECRET_KEY'])
  28. token = serializer.dumps(email, salt=config['SECURITY_PASSWORD_SALT'])
  29. return token
  30. def confirm_token(token, expiration=10800):
  31. config = current_app.config
  32. serializer = URLSafeTimedSerializer(config['SECRET_KEY'])
  33. try:
  34. email = serializer.loads(
  35. token,
  36. salt=config['SECURITY_PASSWORD_SALT'],
  37. max_age=expiration
  38. )
  39. except:
  40. return False
  41. return email