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()
|