|
@@ -25,17 +25,17 @@ from email.header import Header
|
|
|
warnings.filterwarnings('ignore')
|
|
warnings.filterwarnings('ignore')
|
|
|
|
|
|
|
|
# ==================== 邮件配置 ====================
|
|
# ==================== 邮件配置 ====================
|
|
|
-# 请修改以下配置为你的邮箱信息
|
|
|
|
|
|
|
+# 使用本地Postfix SMTP服务器发送
|
|
|
EMAIL_CONFIG = {
|
|
EMAIL_CONFIG = {
|
|
|
- "smtp_server": "smtp.qq.com", # SMTP服务器
|
|
|
|
|
- "smtp_port": 465, # SMTP端口
|
|
|
|
|
- "sender_email": "your_email@qq.com", # 发件人邮箱
|
|
|
|
|
- "sender_password": "your_auth_code", # 邮箱授权码(不是登录密码)
|
|
|
|
|
- "receiver_email": "your_email@qq.com" # 收件人邮箱
|
|
|
|
|
|
|
+ "smtp_server": "localhost", # 本地Postfix服务器
|
|
|
|
|
+ "smtp_port": 25, # SMTP端口
|
|
|
|
|
+ "sender_email": "catfly@openclaw.local", # 发件人邮箱
|
|
|
|
|
+ "sender_password": "", # 本地SMTP无需密码
|
|
|
|
|
+ "receiver_email": "380880504@qq.com" # 收件人邮箱
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
def send_email(subject, html_content, text_content=""):
|
|
def send_email(subject, html_content, text_content=""):
|
|
|
- """发送邮件"""
|
|
|
|
|
|
|
+ """发送邮件 - 使用本地Postfix"""
|
|
|
try:
|
|
try:
|
|
|
msg = MIMEMultipart('alternative')
|
|
msg = MIMEMultipart('alternative')
|
|
|
msg['Subject'] = Header(subject, 'utf-8')
|
|
msg['Subject'] = Header(subject, 'utf-8')
|
|
@@ -50,10 +50,8 @@ def send_email(subject, html_content, text_content=""):
|
|
|
html_part = MIMEText(html_content, 'html', 'utf-8')
|
|
html_part = MIMEText(html_content, 'html', 'utf-8')
|
|
|
msg.attach(html_part)
|
|
msg.attach(html_part)
|
|
|
|
|
|
|
|
- # 发送邮件
|
|
|
|
|
- context = ssl.create_default_context()
|
|
|
|
|
- with smtplib.SMTP_SSL(EMAIL_CONFIG['smtp_server'], EMAIL_CONFIG['smtp_port'], context=context) as server:
|
|
|
|
|
- server.login(EMAIL_CONFIG['sender_email'], EMAIL_CONFIG['sender_password'])
|
|
|
|
|
|
|
+ # 发送邮件 - 本地Postfix无需SSL和认证
|
|
|
|
|
+ with smtplib.SMTP(EMAIL_CONFIG['smtp_server'], EMAIL_CONFIG['smtp_port']) as server:
|
|
|
server.sendmail(
|
|
server.sendmail(
|
|
|
EMAIL_CONFIG['sender_email'],
|
|
EMAIL_CONFIG['sender_email'],
|
|
|
EMAIL_CONFIG['receiver_email'],
|
|
EMAIL_CONFIG['receiver_email'],
|
|
@@ -548,15 +546,7 @@ def main():
|
|
|
# 4. 发送邮件
|
|
# 4. 发送邮件
|
|
|
print("\n📧 步骤4: 发送邮件...")
|
|
print("\n📧 步骤4: 发送邮件...")
|
|
|
subject = f"🚀 创业板50交易报告 {datetime.now().strftime('%m-%d %H:%M')} | 收益{(final_capital/1000000-1)*100:+.2f}%"
|
|
subject = f"🚀 创业板50交易报告 {datetime.now().strftime('%m-%d %H:%M')} | 收益{(final_capital/1000000-1)*100:+.2f}%"
|
|
|
-
|
|
|
|
|
- # 检查邮件配置
|
|
|
|
|
- if EMAIL_CONFIG['sender_email'] == 'your_email@qq.com':
|
|
|
|
|
- print("⚠️ 警告: 请先修改 EMAIL_CONFIG 中的邮箱配置!")
|
|
|
|
|
- print(" 配置文件位于脚本开头的 EMAIL_CONFIG 字典")
|
|
|
|
|
- print("\n📋 报告预览(前500字符):")
|
|
|
|
|
- print(text_report[:500])
|
|
|
|
|
- else:
|
|
|
|
|
- send_email(subject, html_report, text_report)
|
|
|
|
|
|
|
+ send_email(subject, html_report, text_report)
|
|
|
|
|
|
|
|
print("\n✅ 全部完成!")
|
|
print("\n✅ 全部完成!")
|
|
|
print("="*80)
|
|
print("="*80)
|