1.Python相关---钉钉报警及邮件发送
1.1-釘釘報警
參考官方文檔:https://open.dingtalk.com/document/orgapp/custom-robot-access
調用頻率限制:
由于消息發(fā)送太頻繁會嚴重影響群的使用體驗,因此自定義機器人發(fā)送消息的頻率限制如下:
每個機器人每分鐘最多發(fā)送20條消息到群里,如果超過20條,會限流10分鐘。
步驟一:獲取自定義機器WebHook
步驟二:在機器人管理頁面選擇自定義機器人,輸入機器人名字并選擇要發(fā)送消息的群,同時可以為機器人設置機器人頭像
步驟三:完成必要的安全設置,勾選我已閱讀并同意《自定義機器人服務及免責條款》,然后單擊完成。
?
?步驟四:完成設置后,復制出機器人的Webhook地址,可用于向這個群發(fā)送消息,格式如下:
https://oapi.dingtalk.com/robot/send?access_token=XXXXXX步驟五:使用自定義機器人
獲取到Webhook地址后,用戶可以向該地址發(fā)起HTTP POST 請求,即可實現給該釘釘群發(fā)送消息
注意:
-
已默認開通使用自定義機器人發(fā)消息的權限,無需申請。即向Webhook地址發(fā)請求時,無需申請權限。
-
發(fā)起POST請求時,必須將字符集編碼設置成UTF-8。
-
每個機器人每分鐘最多發(fā)送20條。消息發(fā)送太頻繁會嚴重影響群成員的使用體驗,大量發(fā)消息的場景 (譬如系統(tǒng)監(jiān)控報警) 可以將這些信息進行整合,通過markdown消息以摘要的形式發(fā)送到群里。
當前自定義機器人支持以下消息類型,請根據自己的使用場景選擇合適的類型,詳情參見消息類型及數據格式。
-
文本 (text)
-
鏈接 (link)
-
markdown(markdown)
-
ActionCard
-
FeedCard
自定義機器人發(fā)送消息時,可以通過手機號碼指定“被@人列表”。在“被@人列表”里面的人員收到該消息時,會有@消息提醒。免打擾會話仍然通知提醒,首屏出現“有人@你”
步驟六:測試自定義機器人:
import requestsdef 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)) # 發(fā)送post請求print(res.text)if __name__ == '__main__':info = "xxx"send_warning(info)以上,釘釘的userID查看方式:釘釘客戶端-個人信息-釘釘號 設置或查看
1.2-郵件發(fā)送
此處以網易郵箱為例,其他郵箱類似
1.2.1-郵件設置
?開啟POP3/SMTP服務,會產生一個授權碼(僅顯示一次,請妥善保存)
?
1.2.2-發(fā)送郵件類及方法
·類方法
?發(fā)送郵件相關類方法:(配置完可直接使用),此處發(fā)送的為HTML標簽及內容
import smtplib from email.mime.text import MIMEText from email.header import Header from email.mime.multipart import MIMEMultipartclass SendEmail:def __init__(self,host,port,user,password):self.__host = hostself.__port = portself.__user = userself.__password = passwordself.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_addrsself.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標題")效果顯示如下:
?
?·方法
import smtplib from email.mime.text import MIMEText from email.header import Headerdef send_emailMessage():# 創(chuàng)建 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') # 此處為文本,設置為plainmessage['From'] = Header("xxx@163.com") # 發(fā)件人的昵稱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()效果顯示如下:
總結
以上是生活随笔為你收集整理的1.Python相关---钉钉报警及邮件发送的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: this.randomize()?
- 下一篇: python生成倒计时图片_用Pytho