import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
import config
import traceback
def send_verification_email(recipient_email, verification_code):
"""发送验证邮件"""
print(f"尝试向 {recipient_email} 发送验证码: {verification_code}")
# 创建邮件对象
message = MIMEMultipart()
message['From'] = f"{config.EMAIL_FROM_NAME} <{config.EMAIL_FROM}>"
message['To'] = recipient_email
message['Subject'] = Header('验证您的文本分类系统账户', 'utf-8')
# 邮件正文
html_content = f"""
欢迎注册文本分类系统
感谢您注册我们的文本分类系统。请使用下面的验证码完成注册流程:
{verification_code}
此验证码将在30分钟内有效。
如果您没有注册此账户,请忽略此邮件。
谢谢,
文本分类系统团队
"""
message.attach(MIMEText(html_content, 'html', 'utf-8'))
try:
print(f"连接到邮件服务器: {config.EMAIL_HOST}:{config.EMAIL_PORT}")
# 连接邮件服务器
smtp = smtplib.SMTP(config.EMAIL_HOST, config.EMAIL_PORT, timeout=10)
# 打印服务器响应
smtp.set_debuglevel(1)
print(f"开始TLS连接: {config.EMAIL_USE_TLS}")
if config.EMAIL_USE_TLS:
smtp.starttls()
print(f"尝试登录: {config.EMAIL_USERNAME}")
smtp.login(config.EMAIL_USERNAME, config.EMAIL_PASSWORD)
print(f"发送邮件从 {config.EMAIL_FROM} 到 {recipient_email}")
# 发送邮件
smtp.sendmail(config.EMAIL_FROM, recipient_email, message.as_string())
smtp.quit()
print("邮件发送成功")
return True
except Exception as e:
print(f"邮件发送失败: {e}")
print(traceback.format_exc()) # 打印完整的错误堆栈
return False