1.1-钉钉报警

参考官方文档:https://open.dingtalk.com/document/orgapp/custom-robot-access

调用频率限制:

由于消息发送太频繁会严重影响群的使用体验,因此自定义机器人发送消息的频率限制如下:

每个机器人每分钟最多发送20条消息到群里,如果超过20条,会限流10分钟。

步骤一:获取自定义机器WebHook

python 用钉钉发送邮件 钉钉发送邮件怎么发_钉钉

步骤二:在机器人管理页面选择自定义机器人,输入机器人名字并选择要发送消息的群,同时可以为机器人设置机器人头像

python 用钉钉发送邮件 钉钉发送邮件怎么发_自定义_02

步骤三:完成必要的安全设置,勾选我已阅读并同意《自定义机器人服务及免责条款》,然后单击完成。

 

python 用钉钉发送邮件 钉钉发送邮件怎么发_发送消息_03

 步骤四:完成设置后,复制出机器人的Webhook地址,可用于向这个群发送消息,格式如下:

https://oapi.dingtalk.com/robot/send?access_token=XXXXXX

步骤五:使用自定义机器人

获取到Webhook地址后,用户可以向该地址发起HTTP POST 请求,即可实现给该钉钉群发送消息

注意:

  • 已默认开通使用自定义机器人发消息的权限,无需申请。即向Webhook地址发请求时,无需申请权限。
  • 发起POST请求时,必须将字符集编码设置成UTF-8。
  • 每个机器人每分钟最多发送20条。消息发送太频繁会严重影响群成员的使用体验,大量发消息的场景 (譬如系统监控报警) 可以将这些信息进行整合,通过markdown消息以摘要的形式发送到群里。

当前自定义机器人支持以下消息类型,请根据自己的使用场景选择合适的类型,详情参见消息类型及数据格式。

  • 文本 (text)
  • 链接 (link)
  • markdown(markdown)
  • ActionCard
  • FeedCard

自定义机器人发送消息时,可以通过手机号码指定“被@人列表”。在“被@人列表”里面的人员收到该消息时,会有@消息提醒。免打扰会话仍然通知提醒,首屏出现“有人@你”

步骤六:测试自定义机器人:

import requests

def send_warning(info):
    url = "https://oapi.dingtalk.com/robot/send?access_token=xxx"
    headers = {
        "Content-Type": "application/json"
    }
    data = data = {
        "msgtype":"text",
        "text":{"content":"-----------自定义标题内容----------\n\n"+info},
        "at": {
        "atMobiles":[
            "xxxx" # 电话号码
        ],
        "atUserIds":[
            "xxx" # 钉钉id
        ],
        "isAtAll": False
        }
    }
    res = requests.post(url=url,headers=headers,data=json.dumps(data)) # 发送post请求
    print(res.text)

if __name__ == '__main__':
    info = "xxx"
    send_warning(info)

以上,钉钉的userID查看方式:钉钉客户端-个人信息-钉钉号 设置或查看

1.2-邮件发送

此处以网易邮箱为例,其他邮箱类似

1.2.1-邮件设置

python 用钉钉发送邮件 钉钉发送邮件怎么发_html_04

仅显示一次,请妥善保存)

 

python 用钉钉发送邮件 钉钉发送邮件怎么发_自定义_05

python 用钉钉发送邮件 钉钉发送邮件怎么发_钉钉_06

1.2.2-发送邮件类及方法

·类方法

 发送邮件相关类方法:(配置完可直接使用),此处发送的为HTML标签及内容

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart

class SendEmail:
    def __init__(self,host,port,user,password):
        self.__host = host
        self.__port = port
        self.__user = user
        self.__password = password
        self.smtp = smtplib.SMTP()
        # 链接指定服务器
        self.smtp.connect(host=self.__host,port=self.__port)
        # 登陆,需要登陆邮箱和授权密码
        self.smtp.login(user=self.__user, password=self.__password)
    
    def send_message(self, content, subtype, charset=None, from_addr=None, to_addrs=None,header_text=None):
        # 构造MIMEText对象,参数为:正文,MIME的subtype,编码方式
        self.message= MIMEMultipart()
        self.message.attach(MIMEText(content, subtype, charset))# 正文内容   plain代表纯文本,html代表支持html文本
        # self.message = MIMEText(content,subtype, charset)
        self.message["From"] = Header(from_addr) # 可自定义
        if isinstance(to_addrs, list):
            to_addrs_str = ','.join(to_addrs)
        else:
            to_addrs_str = to_addrs
        self.message["To"] = Header(to_addrs_str)
        self.message['Subject'] = Header(header_text, 'utf-8') 
        self.smtp.sendmail(from_addr=from_addr, to_addrs=to_addrs_str, msg=self.message.as_string())


if __name__ == "__main__":
    SendEmail(host="smtp.163.com", port=25, user="xxx@163.com", password="xxx").send_message(content="""<h1 style="color:red">仅用于测试</h1>""",subtype='html',charset='utf-8',from_addr=
    "xxx@163.com",to_addrs=["xxx@163.com","xxx@qq.com"],header_text="xxxx标题")

效果显示如下:

python 用钉钉发送邮件 钉钉发送邮件怎么发_自定义_07

 

 ·方法

import smtplib
from email.mime.text import MIMEText
from email.header import Header

def send_emailMessage():
    # 创建 SMTP 对象
    smtp = smtplib.SMTP()
    # 连接(connect)指定服务器
    smtp.connect(host="smtp.163.com", port=25)
    # 登录,需要:登录邮箱和授权码
    smtp.login(user="xxx@163.com", password="xxx")
    message = MIMEText('xxx', 'plain', 'utf-8') # 此处为文本,设置为plain
    message['From'] = Header("xxx@163.com")  # 发件人的昵称
    message['To'] = Header("xxx@163.com,xxx@qq.com")  # 收件人的昵称
    message['Subject'] = Header('xxx', 'utf-8')  # 定义主题内容
    print(message)
    smtp.sendmail(from_addr="xxx@163.com", to_addrs="xxx@163.com,xxx@qq.com", msg=message.as_string())

if __name__=='__main__':
    send_emailMessage()

效果显示如下:

python 用钉钉发送邮件 钉钉发送邮件怎么发_python 用钉钉发送邮件_08