该项目是一个定时任务自动化脚本,主要用于从指定的接口获取最新的公共 URL 与服务名称,并将其通过 HTML 格式的邮件发送给指定的邮箱。此脚本可以定期执行,并且能够自动获取令牌、请求 API、处理数据并发送邮件。
- 获取登录 Token:通过 API 获取用户的登录 Token。
- 获取公共 URL 与服务名称:从指定的 API 获取所有公共 URL 和对应的服务名称。
- 发送 HTML 邮件:将获取到的公共 URL 与服务名称以格式化的 HTML 邮件发送给指定邮箱。
- 定时执行:使用
schedule
库设置定时任务,每 10 小时执行一次,确保最新的公共 URL 与服务名称能够定期发送。
在运行脚本之前,您需要配置以下环境变量:
USER_EMAIL
: 用户邮箱地址(默认为admin@qq.com
)。USER_PASSWORD
: 用户邮箱密码(默认为77774444
)。CPOLAR_URL
: 需要请求的 CPOLAR API 地址(默认为http://localhost:9200
)。SENDER_EMAIL
: 发送邮件的邮箱(默认为admin@163.com
)。SENDER_PASSWORD
: 发送邮箱的密码(默认为123456
)。RECIPIENT_EMAIL
: 收件人的邮箱地址(默认为admin@163.com
)。
您可以通过设置这些环境变量来定制脚本的行为。
该项目使用 requests
和 schedule
库,因此需要先安装依赖:
pip install requests schedule
执行以下命令来启动脚本:
python script.py
脚本会在第一次启动时立即执行一次任务,并且会进入一个持续运行的状态,每 60 秒检查一次是否有定时任务需要执行。定时任务会每 10 小时执行一次。
- 获取 Token:脚本首先会向指定的 API 发送请求,获取登录所需的 Token。
- 获取公共 URL 与服务名称:使用获取到的 Token,通过 API 获取所有公共 URL 和对应的服务名称。
- 发送邮件:脚本会将获取到的公共 URL 和服务名称以格式化的 HTML 邮件发送到指定的收件人邮箱。
- 定时任务:通过
schedule
库设置定时任务,每 10 小时执行一次上述操作。
邮件的 HTML 格式如下所示:
<html>
<head>
<style>
/* 邮件样式 */
</style>
</head>
<body>
<div class="container">
<div class="header">
最新公共 URL 与服务名称
</div>
<div class="content">
<p>亲爱的用户,</p>
<p>以下是您请求的最新公共 URL 与对应的服务名称:</p>
<ul class="url-list">
<li class="url-item">
<strong>服务名称</strong>: <a href="http://example.com" target="_blank">http://example.com</a>
</li>
<!-- 更多 URL 列表项 -->
</ul>
</div>
<div class="footer">
<p>如果您没有请求此信息,请忽略此邮件。</p>
<p><a href="https://www.mobaijun.com">访问我们的网站</a>以了解更多信息。</p>
</div>
</div>
</body>
</html>
您可以修改以下代码行中的间隔时间:
schedule.every(10).hours.do(job)
将 10
改为所需的小时数,或者使用 minutes
、seconds
等单位来调整执行频率。
在开发和调试时,您可以打印出邮件内容或捕获发送邮件时的错误信息:
try:
with smtplib.SMTP_SSL('smtp.163.com', 465) as server:
server.login(sender_email, sender_password)
server.sendmail(sender_email, recipient_email, msg.as_string())
print("邮件发送成功!")
except Exception as e:
print(f"发送邮件失败: {e}")
脚本会在控制台输出日志,记录每次邮件发送的状态。如果需要更详细的日志,您可以将日志信息写入文件。
version: '3'
services:
cpolar-email-sender:
container_name: mobaijun/cpolar-send-email
environment:
- USER_EMAIL=${USER_EMAIL}
- USER_PASSWORD=${USER_PASSWORD}
- CPOLAR_URL=${CPOLAR_URL}
- SENDER_EMAIL=${SENDER_EMAIL}
- SENDER_PASSWORD=${SENDER_PASSWORD}
- RECIPIENT_EMAIL=${RECIPIENT_EMAIL}
restart: unless-stopped
此项目使用 MIT 许可证。有关详细信息,请参阅 LICENSE。