forked from xiaohei/taiji-AI-PAD
141 lines
3.8 KiB
Python
141 lines
3.8 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
SMTP邮件发送测试脚本
|
||
用于调试阿里云企业邮箱/邮件推送服务配置
|
||
"""
|
||
|
||
import smtplib
|
||
from email.mime.text import MIMEText
|
||
from email.mime.multipart import MIMEMultipart
|
||
|
||
# ==================== 配置区域 ====================
|
||
# 请根据实际情况修改以下配置
|
||
|
||
# 189邮箱(天翼邮箱)配置
|
||
SMTP_SERVER = "smtp.189.cn" # 189邮箱SMTP服务器
|
||
|
||
SMTP_PORT = 465 # SSL端口
|
||
|
||
# 发件人配置
|
||
SMTP_EMAIL = "taijiagent@189.cn"
|
||
SMTP_PASSWORD = "eR)8hD@1Q)3sU%2q" # 授权码
|
||
|
||
# 收件人
|
||
TO_EMAIL = "zsbgnw@gmail.com"
|
||
|
||
# ==================== 测试代码 ====================
|
||
|
||
def test_smtp_ssl():
|
||
"""测试SSL连接(端口465)"""
|
||
print(f"\n{'='*50}")
|
||
print(f"测试 SSL 连接")
|
||
print(f"服务器: {SMTP_SERVER}:{SMTP_PORT}")
|
||
print(f"发件人: {SMTP_EMAIL}")
|
||
print(f"收件人: {TO_EMAIL}")
|
||
print(f"{'='*50}\n")
|
||
|
||
try:
|
||
print("1. 创建SSL连接...")
|
||
server = smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT, timeout=30)
|
||
print(" ✓ SSL连接成功")
|
||
|
||
print("2. 登录认证...")
|
||
server.login(SMTP_EMAIL, SMTP_PASSWORD)
|
||
print(" ✓ 认证成功")
|
||
|
||
print("3. 构建邮件...")
|
||
msg = MIMEMultipart()
|
||
msg['From'] = SMTP_EMAIL
|
||
msg['To'] = TO_EMAIL
|
||
msg['Subject'] = "Taiji AI-PAD 测试邮件"
|
||
|
||
body = """
|
||
这是一封测试邮件。
|
||
|
||
如果您收到此邮件,说明SMTP配置正确。
|
||
|
||
---
|
||
Taiji AI-PAD 团队
|
||
"""
|
||
msg.attach(MIMEText(body, 'plain', 'utf-8'))
|
||
print(" ✓ 邮件构建完成")
|
||
|
||
print("4. 发送邮件...")
|
||
server.send_message(msg)
|
||
print(" ✓ 邮件发送成功!")
|
||
|
||
server.quit()
|
||
return True
|
||
|
||
except smtplib.SMTPAuthenticationError as e:
|
||
print(f" ✗ 认证失败: {e}")
|
||
print("\n可能的原因:")
|
||
print(" - 邮箱地址或密码错误")
|
||
print(" - 需要使用授权码而非登录密码")
|
||
print(" - 邮箱未开启SMTP服务")
|
||
return False
|
||
except smtplib.SMTPConnectError as e:
|
||
print(f" ✗ 连接失败: {e}")
|
||
return False
|
||
except Exception as e:
|
||
print(f" ✗ 错误: {type(e).__name__}: {e}")
|
||
return False
|
||
|
||
|
||
def test_smtp_starttls():
|
||
"""测试STARTTLS连接(端口587/25)"""
|
||
port = 587
|
||
print(f"\n{'='*50}")
|
||
print(f"测试 STARTTLS 连接")
|
||
print(f"服务器: {SMTP_SERVER}:{port}")
|
||
print(f"发件人: {SMTP_EMAIL}")
|
||
print(f"{'='*50}\n")
|
||
|
||
try:
|
||
print("1. 创建连接...")
|
||
server = smtplib.SMTP(SMTP_SERVER, port, timeout=5)
|
||
print(" ✓ 连接成功")
|
||
|
||
print("2. 启用TLS...")
|
||
server.starttls()
|
||
print(" ✓ TLS启用成功")
|
||
|
||
print("3. 登录认证...")
|
||
server.login(SMTP_EMAIL, SMTP_PASSWORD)
|
||
print(" ✓ 认证成功")
|
||
|
||
print("4. 构建并发送邮件...")
|
||
msg = MIMEMultipart()
|
||
msg['From'] = SMTP_EMAIL
|
||
msg['To'] = TO_EMAIL
|
||
msg['Subject'] = "Taiji AI-PAD 测试邮件 (STARTTLS)"
|
||
msg.attach(MIMEText("STARTTLS测试邮件", 'plain', 'utf-8'))
|
||
|
||
server.send_message(msg)
|
||
print(" ✓ 邮件发送成功!")
|
||
|
||
server.quit()
|
||
return True
|
||
|
||
except Exception as e:
|
||
print(f" ✗ 错误: {type(e).__name__}: {e}")
|
||
return False
|
||
|
||
|
||
if __name__ == "__main__":
|
||
print("\n" + "="*60)
|
||
print(" SMTP 邮件发送测试")
|
||
print("="*60)
|
||
|
||
# 测试SSL连接
|
||
ssl_result = test_smtp_ssl()
|
||
|
||
if not ssl_result:
|
||
print("\n尝试 STARTTLS 方式...")
|
||
test_smtp_starttls()
|
||
|
||
print("\n" + "="*60)
|
||
print("测试完成")
|
||
print("="*60 + "\n")
|
||
|