161 lines
4.2 KiB
Python
161 lines
4.2 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
"""
|
||
SMTP 邮件发送测试脚本
|
||
使用 163 邮箱 SMTP 服务发送测试邮件
|
||
"""
|
||
|
||
import smtplib
|
||
from email.mime.text import MIMEText
|
||
from email.mime.multipart import MIMEMultipart
|
||
from email.header import Header
|
||
import sys
|
||
|
||
# SMTP 配置
|
||
SMTP_SERVER = "smtp.163.com"
|
||
SMTP_PORT = 465 # SSL 端口
|
||
EMAIL = "work_fyx02@163.com"
|
||
AUTH_CODE = "QLrTpw7SDxrMuAzh" # 授权码
|
||
|
||
# 收件人
|
||
TO_EMAIL = "Yaxing_feng@dgmaorui.com"
|
||
|
||
def send_test_email():
|
||
"""发送测试邮件"""
|
||
|
||
print("=" * 60)
|
||
print("SMTP 邮件发送测试")
|
||
print("=" * 60)
|
||
print(f"发件人: {EMAIL}")
|
||
print(f"收件人: {TO_EMAIL}")
|
||
print(f"SMTP 服务器: {SMTP_SERVER}:{SMTP_PORT}")
|
||
print("=" * 60)
|
||
|
||
try:
|
||
# 创建邮件
|
||
msg = MIMEMultipart()
|
||
msg["From"] = Header(f"OpenClaw <{EMAIL}>", "utf-8")
|
||
msg["To"] = Header(TO_EMAIL, "utf-8")
|
||
msg["Subject"] = Header("测试邮件 - SMTP 配置验证", "utf-8")
|
||
|
||
# 邮件正文
|
||
body = """📧 **测试邮件 - SMTP 配置验证**
|
||
|
||
**发送时间:** 2026年2月2日 20:43
|
||
|
||
---
|
||
|
||
## 📋 **配置信息**
|
||
|
||
- **发件人邮箱:** work_fyx02@163.com
|
||
- **收件人邮箱:** Yaxing_feng@dgmaorui.com
|
||
- **SMTP 服务器:** smtp.163.com:465
|
||
- **认证方式:** 授权码认证
|
||
|
||
---
|
||
|
||
## ✅ **测试目的**
|
||
|
||
验证 163 邮箱 SMTP 配置是否正常工作。
|
||
|
||
---
|
||
|
||
## 📊 **当前任务状态**
|
||
|
||
- ✅ Cubox API 已配置
|
||
- ✅ 滴答清单 API 已配置
|
||
- ✅ Notion API 已配置
|
||
- ✅ SMTP 邮箱信息已保存
|
||
- ✅ SMTP 测试邮件发送中...
|
||
- ⏳ 每日新闻任务待集成邮件发送
|
||
|
||
---
|
||
|
||
## ⏰ **定时任务**
|
||
|
||
**每日新闻摘要发送时间:** 每天早上 7:30
|
||
**接收邮箱:** Yaxing_feng@dgmaorui.com
|
||
|
||
---
|
||
|
||
**此邮件由 OpenClaw 自动发送**
|
||
**SMTP 测试脚本:test-smtp.py**
|
||
"""
|
||
|
||
msg.attach(MIMEText(body, "plain", "utf-8"))
|
||
|
||
# 连接 SMTP 服务器并发送邮件
|
||
print("\n正在连接 SMTP 服务器...")
|
||
with smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT) as server:
|
||
print(f"连接成功: {SMTP_SERVER}:{SMTP_PORT}")
|
||
|
||
print("正在登录...")
|
||
server.login(EMAIL, AUTH_CODE)
|
||
print(f"登录成功: {EMAIL}")
|
||
|
||
print("正在发送邮件...")
|
||
server.send_message(msg)
|
||
print("邮件发送成功!")
|
||
|
||
print("\n" + "=" * 60)
|
||
print("✅ 测试完成 - 邮件已发送")
|
||
print("=" * 60)
|
||
print(f"收件人: {TO_EMAIL}")
|
||
print("请检查收件箱(包括垃圾邮件)")
|
||
print("=" * 60)
|
||
|
||
return True
|
||
|
||
except smtplib.SMTPAuthenticationError as e:
|
||
print("\n" + "=" * 60)
|
||
print("❌ 认证失败")
|
||
print("=" * 60)
|
||
print(f"错误信息: {e}")
|
||
print("\n可能原因:")
|
||
print("1. 授权码错误")
|
||
print("2. 163 邮箱未开启 SMTP 服务")
|
||
print("3. 需要在 163 邮箱网页版生成新的授权码")
|
||
print("=" * 60)
|
||
return False
|
||
|
||
except smtplib.SMTPException as e:
|
||
print("\n" + "=" * 60)
|
||
print("❌ 发送失败")
|
||
print("=" * 60)
|
||
print(f"错误信息: {e}")
|
||
print("=" * 60)
|
||
return False
|
||
|
||
except Exception as e:
|
||
print("\n" + "=" * 60)
|
||
print("❌ 未知错误")
|
||
print("=" * 60)
|
||
print(f"错误信息: {e}")
|
||
print("=" * 60)
|
||
return False
|
||
|
||
def main():
|
||
"""主函数"""
|
||
print("开始 SMTP 邮件发送测试...")
|
||
print()
|
||
|
||
success = send_test_email()
|
||
|
||
if success:
|
||
print("\n💡 提示:")
|
||
print("1. 如果未收到邮件,请检查垃圾邮件文件夹")
|
||
print("2. 如果认证失败,请重新生成 163 邮箱授权码")
|
||
print("3. 如果发送成功,说明 SMTP 配置正常")
|
||
sys.exit(0)
|
||
else:
|
||
print("\n🔧 解决方案:")
|
||
print("1. 登录 163 邮箱网页版")
|
||
print("2. 进入设置 -> POP3/SMTP/IMAP")
|
||
print("3. 开启 SMTP 服务")
|
||
print("4. 生成新的授权码")
|
||
print("5. 更新 smtp-config.md 中的授权码")
|
||
sys.exit(1)
|
||
|
||
if __name__ == "__main__":
|
||
main()
|