SakuraFrp 自动签到(main + sakura_frp_auto_check + SakuraFrpQiandao),已排除 .env 与日志
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
import smtplib
|
||||
import os
|
||||
from email.mime.text import MIMEText
|
||||
from email.mime.multipart import MIMEMultipart
|
||||
from email.mime.base import MIMEBase
|
||||
from email import encoders
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
def send_log_email(log_file='checkin.log'):
|
||||
"""
|
||||
发送签到日志邮件
|
||||
|
||||
Args:
|
||||
log_file: 日志文件路径
|
||||
"""
|
||||
# 从环境变量读取配置
|
||||
smtp_server = os.getenv('SMTP_SERVER', 'smtp.gmail.com')
|
||||
smtp_port = int(os.getenv('SMTP_PORT', '587'))
|
||||
sender_email = os.getenv('EMAIL_USERNAME', '')
|
||||
sender_password = os.getenv('EMAIL_PASSWORD', '')
|
||||
receiver_email = os.getenv('RECEIVER_EMAIL', sender_email)
|
||||
|
||||
# 检查配置
|
||||
if not sender_email or not sender_password:
|
||||
print("❌ 邮件配置未设置,跳过发送")
|
||||
return False
|
||||
|
||||
try:
|
||||
# 读取日志内容
|
||||
log_content = ""
|
||||
if os.path.exists(log_file):
|
||||
with open(log_file, 'r', encoding='utf-8') as f:
|
||||
log_content = f.read()
|
||||
else:
|
||||
log_content = "日志文件不存在"
|
||||
|
||||
# 判断签到是否成功(根据日志内容)
|
||||
is_success = "签到流程完成" in log_content or "验证码验证成功" in log_content
|
||||
status_emoji = "✅" if is_success else "❌"
|
||||
status_text = "成功" if is_success else "失败"
|
||||
|
||||
# 创建邮件
|
||||
msg = MIMEMultipart()
|
||||
msg['From'] = sender_email
|
||||
msg['To'] = receiver_email
|
||||
msg['Subject'] = f"{status_emoji} SakuraFrp 签到{status_text} - {datetime.now().strftime('%Y-%m-%d')}"
|
||||
|
||||
# 邮件正文
|
||||
body = f"""
|
||||
SakuraFrp 自动签到报告
|
||||
|
||||
状态: {status_emoji} {status_text}
|
||||
时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}
|
||||
|
||||
{'='*50}
|
||||
日志内容:
|
||||
{'='*50}
|
||||
|
||||
{log_content[-2000:] if len(log_content) > 2000 else log_content}
|
||||
|
||||
{'='*50}
|
||||
此邮件由自动签到系统发送
|
||||
"""
|
||||
|
||||
msg.attach(MIMEText(body, 'plain', 'utf-8'))
|
||||
|
||||
# 添加日志附件
|
||||
if os.path.exists(log_file):
|
||||
with open(log_file, 'rb') as f:
|
||||
part = MIMEBase('application', 'octet-stream')
|
||||
part.set_payload(f.read())
|
||||
encoders.encode_base64(part)
|
||||
part.add_header('Content-Disposition', f'attachment; filename= {os.path.basename(log_file)}')
|
||||
msg.attach(part)
|
||||
|
||||
if smtp_port == 465:
|
||||
server = smtplib.SMTP_SSL(smtp_server, smtp_port)
|
||||
else:
|
||||
server = smtplib.SMTP(smtp_server, smtp_port)
|
||||
server.starttls()
|
||||
|
||||
with server:
|
||||
server.login(sender_email, sender_password)
|
||||
server.send_message(msg)
|
||||
|
||||
print(f"✅ 邮件发送成功: {receiver_email}")
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ 邮件发送失败: {e}")
|
||||
return False
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
send_log_email()
|
||||
Reference in New Issue
Block a user