Mit Warnungen nach Beurteilung der Verarbeitung und Benachrichtigungen am Ende der Verarbeitung Es gibt gelegentliche Fälle, in denen Sie per E-Mail oder über einen bestimmten Dienst benachrichtigt werden möchten. Es wurde jedes Mal unangenehm zu denken, also fasste ich es zusammen.
Durchgeführt bei Google Cola Boratory. Die Python-Version ist unten.
Mail Zunächst eine E-Mail-Benachrichtigung an solid.
Der SMTP-Server übernimmt Google Mail
import smtplib
from email.mime.text import MIMEText
from email.utils import formatdate
#E-Mail-Adresse, Name und Passwort des Absenders (im Fall von Google Mail das App-Passwort ausstellen und verwenden)
FROM_ADDRESS = '[email protected]'
FROM_NAME = 'XXXXXX'
MY_PASSWORD = 'xxxxx'
#Machen Sie das Ziel zu einem Listentyp
TO_ADDRESS = ['[email protected]', '[email protected]']
from_mail_addr = FROM_ADDRESS
_from_name = FROM_NAME
_from_addr = "{} <{}>".format(_from_name, from_mail_addr)
#Erstellen Sie eine Nachricht zum Senden
## https://docs.python.org/ja/3.5/library/email-examples.html
def create_message(list_to_addr, subject, body):
msg = MIMEText(body)
msg['Subject'] = subject
# msg['From'] = _from_addr
msg['From'] = _from_name
msg['To'] = ','.join(list_to_addr)
#Ich bin mir nicht sicher, aber selbst wenn ich es in BCC einfüge, wird es nur in der Spalte BCC angezeigt
# msg['Bcc'] = ','.join(list_bcc_addrs)
msg['Date'] = formatdate()
return msg
#Senden Sie über den SMTP-Server von Google Mail
def send_gmail(list_to_addr, msg):
smtpobj = smtplib.SMTP('smtp.gmail.com', 587)
smtpobj.ehlo()
smtpobj.starttls()
smtpobj.ehlo()
smtpobj.login(FROM_ADDRESS, MY_PASSWORD)
smtpobj.sendmail(from_mail_addr, list_to_addr, msg.as_string())
smtpobj.close()
#Prozess zum tatsächlichen Senden
##Nachrichtenzusammensetzung
list_to_addr = TO_ADDRESS
subject = "<Benachrichtigungsbeispiel>"
import datetime
dt_now = datetime.datetime.now()
#Zeilenumbrüche\Einfach mit n einstellen
body = "Es ist der zu sendende Inhalt\Werden n Zeilenumbrüche wiedergegeben?\n{}"
body = body.format(dt_now.strftime('%Y Jahr%m Monat%d Tag%H:%M:%S'))
msg = create_message(list_to_addr, subject, body)
##Übertragungsprozess
send_gmail(list_to_addr, msg)
LINE Dann LINE. Wenn Sie LINE benachrichtigen möchten, gibt es zwei Haupttypen. Soll ich mich nur selbst benachrichtigen oder sollte ich einen bestimmten Benutzer als BOT benachrichtigen?
Stellen Sie Token für die unten aufgeführten Räume aus https://notify-bot.line.me/ja/
import requests
line_notify_api = 'https://notify-api.line.me/api/notify'
payload = {'message': send_message}
headers = {'Authorization': 'Bearer ' + line_notify_token}
line_notify = requests.post(line_notify_api, data=payload, headers=headers)
Sie können auch die LINE Bot-API verwenden, um einen bestimmten Benutzer Ihrer Freunde zu erreichen
Hiermit erstellen Sie einen BOT aus dem Folgenden https://developers.line.biz/console
import json
import requests
#HTTP-Header festlegen
header = {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + _access_token,
}
#Übertragungsdaten einstellen
send_data = {
'to': to_user_id,
'messages': [
{
'type': 'text',
'text': send_message
}
]
}
#Lauf
url = 'https://api.line.me/v2/bot/message/push'
res = requests.post(url, headers=header, data=json.dumps(send_data))
if(res.status_code != 200):
print("error : [{}]".format(res.text))
Slack
Ist es ein aktueller Trend, Chat-Tools benachrichtigen zu wollen?
Erstellen Sie eine URL auf dem Zielkanal als eingehenden Webhook und werfen Sie sie in POST OK
import requests
import json
requests.post(slack_url, data=json.dumps({'text': send_message}))
Einfach.
Teams
Grundsätzlich mit Slack. Erstellen Sie eine URL auf dem Zielkanal als eingehenden Webhook und werfen Sie sie in POST. Es ist nur eine Funktion von Teams, die sich von Slack unterscheidet, aber sie kann betitelt werden
Da es in HTML ausgegeben wird, wird es nicht in \ n unterbrochen. Wenn Sie es also mit anderen Benachrichtigungen kombinieren möchten, sollten Sie eine Ersatzverarbeitung hinzufügen.
import requests
import json
send_message = send_message.replace('\n', '<BR>')
requests.post(teams_webhook_url, data=json.dumps({'title': subject, 'text': send_message}))
IFTTT
Am Ende werde ich versuchen, zu IFTTTs Webhook zu springen, damit ich zu allem springen kann
Weil ich nur ein wenig kompliziertes Verfahren kurz beschreiben werde Wenn Sie noch nie einen Webhook mit IFTTT erstellt haben, sollten Sie aufgeben und zu einer anderen Seite wechseln.
Webhooks hat nur eine Webanforderung empfangen. Wählen Sie sie daher aus.
Wählen Sie die Aktion, die Sie mögen Stellen Sie den Ausgabeinhalt vorerst unter der Annahme ein, dass es sich um LINE handelt
Bestimmen Sie den Apfelnamen und drücken Sie Fertig stellen.
Neigen dazu, von hier aus verwirrend zu sein 6. Wählen Sie oben rechts Meine Dienste aus, um den Webhooks-Dienst anzuzeigen
Die URL des IFTTT-Webhooks wird durch den auf diesem Einstellungsbildschirm angezeigten Schlüssel und den zuvor genannten Ereignisnamen bestimmt.
Https://maker.ifttt.com/trigger/
/ with / key /
Wenn Sie an diesen Punkt kommen, können Sie ihn einfach per POST in die URL einfügen, wie z. B. den Webhook von Slack oder TEAMS. Es gibt drei Parameter: Wert1, Wert2 und Wert3.
import requests
requests.post(url_ifttt, data={'value1': subject, 'value2': send_message, 'value3': ''})
Wenn ich IFTTT durchlaufen kann, ist das Ziel meiner Meinung nach irrelevant, sodass ich mein bevorzugtes Benachrichtigungsziel benachrichtigen kann.
Wenn Sie alles zusammenfügen und alle gleichzeitig benachrichtigen, sieht es so aus.
import smtplib
from email.mime.text import MIMEText
from email.utils import formatdate
import requests
import json
#E-Mail-Adresse, Name und Passwort des Absenders (im Fall von Google Mail das App-Passwort ausstellen und verwenden)
FROM_ADDRESS = '[email protected]'
FROM_NAME = 'XXXXXX'
MY_PASSWORD = 'xxxxx'
#Machen Sie das Ziel zu einem Listentyp
TO_ADDRESS = ['[email protected]', '[email protected]']
def create_message(list_to_addr, subject, body):
msg = MIMEText(body)
msg['Subject'] = subject
msg['From'] = FROM_NAME
msg['To'] = ','.join(list_to_addr)
#Ich bin mir nicht sicher, aber selbst wenn ich es in BCC einfüge, wird es nur in der Spalte BCC angezeigt
# msg['Bcc'] = ','.join(list_bcc_addrs)
msg['Date'] = formatdate()
return msg
def send_gmail(list_to_addr, msg):
smtpobj = smtplib.SMTP('smtp.gmail.com', 587)
smtpobj.ehlo()
smtpobj.starttls()
smtpobj.ehlo()
smtpobj.login(FROM_ADDRESS, MY_PASSWORD)
smtpobj.sendmail(FROM_ADDRESS, list_to_addr, msg.as_string())
smtpobj.close()
def Notice_Mail(subject, send_message):
list_to_addr = TO_ADDRESS
msg = create_message(list_to_addr, subject, send_message)
send_gmail(list_to_addr, msg)
line_notify_token = 'xxxxxxxxxxx'
def Notice_LINE_Self(send_message):
line_notify_api = 'https://notify-api.line.me/api/notify'
payload = {'message': send_message}
headers = {'Authorization': 'Bearer ' + line_notify_token}
line_notify = requests.post(line_notify_api, data=payload, headers=headers)
_access_token ='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
def Notice_LINE_push(to_user_id, send_message):
#HTTP-Header festlegen
header = {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + _access_token,
}
#Übertragungsdaten einstellen
send_data = {
'to': to_user_id,
'messages': [
{
'type': 'text',
'text': send_message
}
]
}
#Lauf
url = 'https://api.line.me/v2/bot/message/push'
res = requests.post(url, headers=header, data=json.dumps(send_data))
if(res.status_code != 200):
print("error : [{}]".format(res.text))
slack_url = 'https://hooks.slack.com/services/xxxxxxxx/xxxxxxxx/xxxxxx'
def Notice_Slack(send_message):
requests.post(slack_url, data=json.dumps({'text': send_message}))
teams_webhook_url = 'https://outlook.office.com/webhook/xxxxxxx/IncomingWebhook/xxxxxxx/xxxxxx'
def Notice_TEAMS(subject, send_message):
send_message = send_message.replace('\n', '<BR>')
requests.post(teams_webhook_url, data=json.dumps({'title': subject, 'text': send_message}))
url_ifttt = 'https://maker.ifttt.com/trigger/eventid/with/key/xxxxx'
def Notice_IFTTT(subject, send_message):
requests.post(url_ifttt, data={'value1': subject, 'value2': send_message, 'value3': ''})
def Notice(subject, body):
#Benachrichtigungsverarbeitung: E-Mail
Notice_Mail(subject, body)
#Benachrichtigungsverarbeitung: LINE_Notify
Notice_LINE_Self(body)
#Benachrichtigungsverarbeitung: LINE_push
userid = 'xxxxxxxxxx'
Notice_LINE_push(userid, body)
#Benachrichtigungsverarbeitung: Slack
Notice_Slack(body)
#Benachrichtigungsverarbeitung: TEAMS
Notice_TEAMS(subject, body)
#Benachrichtigungsverarbeitung: IFTTT (an LINE via)
Notice_IFTTT(subject, body)
import datetime
dt_now = datetime.datetime.now()
#Zeilenumbrüche\Einfach mit n einstellen
body = "Es ist der zu sendende Inhalt\Werden n Zeilenumbrüche wiedergegeben?\n{}"
body = body.format(dt_now.strftime('%Y Jahr%m Monat%d Tag%H:%M:%S'))
subject = "<Benachrichtigungsmuster: {}>".format(dt_now.strftime('%Y%m%d %H%M%S'))
#Benachrichtigung
Notice(subject, body)
Recommended Posts