Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于邮箱通知的建议 #44

Open
OwnerCM opened this issue Apr 1, 2023 · 9 comments
Open

关于邮箱通知的建议 #44

OwnerCM opened this issue Apr 1, 2023 · 9 comments

Comments

@OwnerCM
Copy link

OwnerCM commented Apr 1, 2023

感谢大佬提供这么好用的工具并一直保持更新,对于新的邮箱功能提供2个建议:
1、发送和接收邮件的配置能否改为在Config.xml里进行配置。
2、每日18点的定时邮件能否改为有错误被暂停的账号才发送。

@hongyonghan
Copy link
Owner

关于以上两点建议会在近期进行改进。请持续关注。

@hongyonghan
Copy link
Owner

说的两点建议选择性改进了一下。一是可以使用环境变量的形式进行修改发送邮箱和接收邮箱,而是不考虑暂停的时候才发送。这个可以自己进代码里面修改,很简单。不考虑的原因是有可能因为机器关机等原因无法收到邮件,会被默认是正常运行。每天发送可能会有点打扰,但是放心。

@Hopeless
Copy link

Hopeless commented Apr 3, 2023

感谢老哥提供了这么好的工具,看到这个issue,也想搭车提个建议😀:
大佬可否考虑接入Server酱(https://sct.ftqq.com/)通过App(微信、PushDeer、Bark等)推送,这样比邮箱更方便直接~

@hongyonghan
Copy link
Owner

@Hopeless 下个版本会考虑,由于个人时间精力有限,不定时更新。大家有啥需求可以发在这个issue下面。这个issue我会一直开着。

@hongyonghan
Copy link
Owner

可以考虑加进去 @mmkakac

@xiaoweiXX
Copy link

说的两点建议选择性改进了一下。一是可以使用环境变量的形式进行修改发送邮箱和接收邮箱,而是不考虑暂停的时候才发送。这个可以自己进代码里面修改,很简单。不考虑的原因是有可能因为机器关机等原因无法收到邮件,会被默认是正常运行。每天发送可能会有点打扰,但是放心。

这样邮箱里就会充满垃圾邮件啊(虽然本来也不少了)。要不然大佬加个开关,让用户自己选择邮件通知的形式,免得邮箱全是这种邮件。

@Nebulosa-Cat
Copy link

通知的話...可能Discord Webhook或Tg Bot吧?這兩個實現應該是比較簡單的

@hw7622
Copy link

hw7622 commented Jul 18, 2024

研究了一下大佬的代码,做了一下修改 将容器里面的csv文件挂载出来之后 定时任务执行这个脚本就可以钉钉或者微信PushPlus推送了 进入容器里面停止大佬的邮箱发送定时任务 就不再用邮箱了

import csv
import os
import json
import requests
import time
import hmac
import hashlib
import base64
import urllib.parse

# 定义令牌和密钥
DD_TOKEN = 'your-dingtalk-token'  # 替换为实际的钉钉Token
DD_SECRET = 'your-dingtalk-secret'  # 替换为实际的钉钉Secret
PUSHPLUS_TOKEN = 'your-pushplus-token'  # 替换为实际的PushPlus Token

# 定义一个函数检查是否账户处于暂停状态
def isPaused():
    is_paused = False
    with open('/opt/renewx/appdata/DataBase/EXAccountRun.csv', 'rt') as csvfile:  # 更改为宿主机上的实际路径
        reader = csv.reader(csvfile)
        column = [row[7] for row in reader]
        for i in range(1, len(column)):
            if column[i] == 'True':
                is_paused = True
                break
    return is_paused

# 定义一个函数发送钉钉机器人通知
def sendDingTalkNotification(content):
    if DD_TOKEN.strip() and DD_SECRET.strip():
        timestamp = str(round(time.time() * 1000))
        string_to_sign = '{}\n{}'.format(timestamp, DD_SECRET)
        hmac_code = hmac.new(DD_SECRET.encode(), string_to_sign.encode(), digestmod=hashlib.sha256).digest()
        sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
        url = f'https://oapi.dingtalk.com/robot/send?access_token={DD_TOKEN}&timestamp={timestamp}&sign={sign}'
        headers = {"Content-Type": "application/json;charset=utf-8"}
        data = {
            "msgtype": "markdown",
            "markdown": {
                "title": "ms365 检查结果",
                "text": f"ms365 checkout\n> {content}"
            }
        }
        response = requests.post(url=url, data=json.dumps(data), headers=headers, timeout=15)
        if response.json().get("errcode") == 0:
            print("钉钉机器人通知发送成功!")
        else:
            print("钉钉机器人通知发送失败!")

# 定义一个函数发送PushPlus通知
def sendPushPlusNotification(content):
    if PUSHPLUS_TOKEN:
        url = 'http://www.pushplus.plus/send'
        data = {
            "token": PUSHPLUS_TOKEN,
            "title": "ms365 检查结果",
            "content": content,
        }
        headers = {'Content-Type': 'application/json'}
        response = requests.post(url, data=json.dumps(data), headers=headers)
        if response.status_code == 200:
            print("PushPlus通知发送成功!")
        else:
            print("PushPlus通知发送失败!")

# 主程序入口
if __name__ == '__main__':
    is_paused = isPaused()
    if is_paused:
        content = "结果:有ms账号已经暂停,请前往查看。"
    else:
        content = "结果:账号运行正常。"

    # 检查钉钉的令牌和密钥是否已填写,若填写则发送钉钉通知
    if DD_TOKEN and DD_SECRET:
        sendDingTalkNotification(content)

    # 检查PushPlus的令牌是否已填写,若填写则发送PushPlus通知
    if PUSHPLUS_TOKEN:
        sendPushPlusNotification(content)```

@OwnerCM
Copy link
Author

OwnerCM commented Jul 18, 2024

研究了一下大佬的代码,做了一下修改 将容器里面的csv文件挂载出来之后 定时任务执行这个脚本就可以钉钉或者微信PushPlus推送了 进入容器里面停止大佬的邮箱发送定时任务 就不再用邮箱了

import csv
import os
import json
import requests
import time
import hmac
import hashlib
import base64
import urllib.parse

# 定义令牌和密钥
DD_TOKEN = 'your-dingtalk-token'  # 替换为实际的钉钉Token
DD_SECRET = 'your-dingtalk-secret'  # 替换为实际的钉钉Secret
PUSHPLUS_TOKEN = 'your-pushplus-token'  # 替换为实际的PushPlus Token

# 定义一个函数检查是否账户处于暂停状态
def isPaused():
    is_paused = False
    with open('/opt/renewx/appdata/DataBase/EXAccountRun.csv', 'rt') as csvfile:  # 更改为宿主机上的实际路径
        reader = csv.reader(csvfile)
        column = [row[7] for row in reader]
        for i in range(1, len(column)):
            if column[i] == 'True':
                is_paused = True
                break
    return is_paused

# 定义一个函数发送钉钉机器人通知
def sendDingTalkNotification(content):
    if DD_TOKEN.strip() and DD_SECRET.strip():
        timestamp = str(round(time.time() * 1000))
        string_to_sign = '{}\n{}'.format(timestamp, DD_SECRET)
        hmac_code = hmac.new(DD_SECRET.encode(), string_to_sign.encode(), digestmod=hashlib.sha256).digest()
        sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
        url = f'https://oapi.dingtalk.com/robot/send?access_token={DD_TOKEN}&timestamp={timestamp}&sign={sign}'
        headers = {"Content-Type": "application/json;charset=utf-8"}
        data = {
            "msgtype": "markdown",
            "markdown": {
                "title": "ms365 检查结果",
                "text": f"ms365 checkout\n> {content}"
            }
        }
        response = requests.post(url=url, data=json.dumps(data), headers=headers, timeout=15)
        if response.json().get("errcode") == 0:
            print("钉钉机器人通知发送成功!")
        else:
            print("钉钉机器人通知发送失败!")

# 定义一个函数发送PushPlus通知
def sendPushPlusNotification(content):
    if PUSHPLUS_TOKEN:
        url = 'http://www.pushplus.plus/send'
        data = {
            "token": PUSHPLUS_TOKEN,
            "title": "ms365 检查结果",
            "content": content,
        }
        headers = {'Content-Type': 'application/json'}
        response = requests.post(url, data=json.dumps(data), headers=headers)
        if response.status_code == 200:
            print("PushPlus通知发送成功!")
        else:
            print("PushPlus通知发送失败!")

# 主程序入口
if __name__ == '__main__':
    is_paused = isPaused()
    if is_paused:
        content = "结果:有ms账号已经暂停,请前往查看。"
    else:
        content = "结果:账号运行正常。"

    # 检查钉钉的令牌和密钥是否已填写,若填写则发送钉钉通知
    if DD_TOKEN and DD_SECRET:
        sendDingTalkNotification(content)

    # 检查PushPlus的令牌是否已填写,若填写则发送PushPlus通知
    if PUSHPLUS_TOKEN:
        sendPushPlusNotification(content)```

最好的解决方式还是有自动特赦类功能

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants