|
|
| from datetime import datetime
|
|
|
| def generate_register_email(user: dict, code: str) -> str:
|
| """生成注册确认邮件HTML"""
|
| return f"""
|
| <html>
|
| <head>
|
| <style>
|
| body {{ font-family: Arial, sans-serif; background-color: #f7f7f7; }}
|
| .container {{ max-width: 600px; margin: 20px auto; padding: 20px; background: #fff; }}
|
| .header {{ background: #f0f0f0; padding: 20px; text-align: center; }}
|
| .code {{ font-size: 32px; color: #333; text-align: center; margin: 20px 0; }}
|
| </style>
|
| </head>
|
| <body>
|
| <div class="container">
|
| <div class="header">
|
| <h1>欢迎注册我们的服务</h1>
|
| </div>
|
| <div class="content">
|
| <p>尊敬的{user.get('name', '用户')}:</p>
|
| <p>您的注册验证码是:</p>
|
| <div class="code">{code}</div>
|
| <p>验证码有效期15分钟,请勿泄露给他人</p>
|
| </div>
|
| </div>
|
| </body>
|
| </html>
|
| """
|
|
|
| def generate_new_user_notification(user: dict) -> str:
|
| """生成新用户注册通知邮件HTML"""
|
| return f"""
|
| <html>
|
| <style>
|
| .container {{ max-width: 600px; margin: 20px auto; padding: 20px; background: #fff; }}
|
| ul {{ list-style: none; padding: 0; }}
|
| li {{ margin: 10px 0; }}
|
| </style>
|
| <body>
|
| <div class="container">
|
| <h2>系统通知:新用户注册</h2>
|
| <p>以下用户刚刚完成了注册:</p>
|
| <ul>
|
| <li>用户ID:{user.get('id', '')}</li>
|
| <li>邮箱:{user.get('email', '')}</li>
|
| <li>注册时间:{user.get('created_at', datetime.now().strftime('%Y-%m-%d %H:%M:%S'))}</li>
|
| </ul>
|
| </div>
|
| </body>
|
| </html>
|
| """
|
|
|
| def generate_password_reset_email(user: dict, code: str) -> str:
|
| """生成密码重置邮件HTML"""
|
| return f"""
|
| <html>
|
| <style>
|
| .container {{ max-width: 600px; margin: 20px auto; padding: 20px; background: #fff; }}
|
| .code {{ color: #007bff; font-size: 32px; text-align: center; }}
|
| </style>
|
| <body>
|
| <div class="container">
|
| <h2>密码重置验证码</h2>
|
| <p>您的密码重置验证码是:</p>
|
| <div class="code">{code}</div>
|
| <p>验证码有效期30分钟</p>
|
| </div>
|
| </body>
|
| </html>
|
| """
|
|
|
| def generate_password_change_email(user: dict) -> str:
|
| """生成密码修改通知邮件HTML"""
|
| return f"""
|
| <html>
|
| <style>
|
| .container {{ max-width: 600px; margin: 20px auto; padding: 20px; background: #fff; }}
|
| </style>
|
| <body>
|
| <div class="container">
|
| <h2>密码修改通知</h2>
|
| <p>您的账户 {user.get('email', '')} 密码修改成功</p>
|
| <p>时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}</p>
|
| </div>
|
| </body>
|
| </html>
|
| """ |