Rest-API Aufruf bei Mailempfang
Hallo Zusammen
Ich würde gerne anhand einer eingehenden email ein Track&Release Issue erstellen. Der API Call zum erstellen eines issues würde so aussehen:
https://developer.atlassian.com/server/jira/platform/jira-rest-api-examp ...
Die Frage ist nun wie bekomme ich es hin das wenn im Outlook eine Mail eines bestimmten Absenders eingeht eben ein solcher api request gestartet wird?
In der Email sollen dann auch bestimmte Infos wie User mit in das Ticket ins Description Field mit aufgenommen werden.
Einer ne Idee wie man das lösen könnte??
Ich würde gerne anhand einer eingehenden email ein Track&Release Issue erstellen. Der API Call zum erstellen eines issues würde so aussehen:
https://developer.atlassian.com/server/jira/platform/jira-rest-api-examp ...
Die Frage ist nun wie bekomme ich es hin das wenn im Outlook eine Mail eines bestimmten Absenders eingeht eben ein solcher api request gestartet wird?
In der Email sollen dann auch bestimmte Infos wie User mit in das Ticket ins Description Field mit aufgenommen werden.
Einer ne Idee wie man das lösen könnte??
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1262939252
Url: https://administrator.de/contentid/1262939252
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
5 Kommentare
Neuester Kommentar
Moin,
was ist ein "Track&Release Issue"?
Kann man das mit einem "Meilenstein" beim Agilen Projektmanagement vergleichen?
Gruß
C.C.
was ist ein "Track&Release Issue"?
Kann man das mit einem "Meilenstein" beim Agilen Projektmanagement vergleichen?
Gruß
C.C.
Servus.
Für solche Sachen ala Mail checken und darauf reagieren hatte ich hier schon x unterschiedlichste Varianten gepostet, ob für Windows mit der Powershell (Mailkit oder auch EWS), VBA in Outlook selbst oder unter Linux mit Python etc.
In meinen Beiträgen findest du dazu genügend Input anhand von praktischen Codebeispielen:
Da kannst du dir das raussuchen was dir am ehesten liegt.
Ein Rest Request in den Skripten zu ergänzen ist dann ja ein Kinderspiel und in der Powershell mit
Hier mal "Random" ein einfaches Beispiel mit Python (Achtung mit den Einrückungen, das kann beim Kopieren hier aus dem Forum evt. zu Fehlern führen, dann müssen die Einrückungen korrigiert werden, da Python diesbezüglich ja empfindlich ist)
Grüße Uwe
Für solche Sachen ala Mail checken und darauf reagieren hatte ich hier schon x unterschiedlichste Varianten gepostet, ob für Windows mit der Powershell (Mailkit oder auch EWS), VBA in Outlook selbst oder unter Linux mit Python etc.
In meinen Beiträgen findest du dazu genügend Input anhand von praktischen Codebeispielen:
- E-Mail Client für Kommandozeile
- Script odgl ausführen, wenn E-Mail eingeht
- Linux: Automatisiert Posteingang checken und Skript ausführen
- Outlook newMailex oder NewMail?
Da kannst du dir das raussuchen was dir am ehesten liegt.
Ein Rest Request in den Skripten zu ergänzen ist dann ja ein Kinderspiel und in der Powershell mit
Invoke-Restmethod
bzw. Invoke-Webrequest
oder Python mit Import des "requests" Moduls schnell erledigt.Hier mal "Random" ein einfaches Beispiel mit Python (Achtung mit den Einrückungen, das kann beim Kopieren hier aus dem Forum evt. zu Fehlern führen, dann müssen die Einrückungen korrigiert werden, da Python diesbezüglich ja empfindlich ist)
#!/usr/bin/env python3
# ==================================================================================
# CONNECT TO IMAP MAILBOX AND PROCESS MESSAGES FROM SPECIFIC USER
# ==================================================================================
#======= IMPORTS ========
import imaplib
import email
import os
import sys
import re
import requests
# ======= VARS ==========
# MAILSERVER
SERVER = 'imap.domain.tld'
# USERNAME
USERNAME = 'USERNAME'
# PASSWORD
PASSWORD = 'PASSWORD'
# from email
MAILFROM = 'user@domain.tld'
# ======= CODE ===========
try:
# connect to server
conn = imaplib.IMAP4_SSL(SERVER)
# login into mailbox
ret,details = conn.login(USERNAME,PASSWORD)
if ret != 'OK':
raise Exception('Not able to sign in.')
# select inbox
ret, data = conn.select('INBOX')
if ret != 'OK':
raise Exception('ERROR, could not select INBOX folder (name correct?).')
# filter out mails
(ret, messages) = conn.search(None,'UNSEEN')
if ret != 'OK':
raise Exception('Could not fetch mails.')
# get message ids in list
message_ids = messages.split()
# if there are messages
if len(message_ids) > 0:
# itterate over all messages
for msg in message_ids:
# get message
ret,parts = conn.fetch(msg,'(RFC822)')
if ret != 'OK':
raise Exception('ERROR, fetching mail with id ' + str(msg))
# body part
body = parts[1]
# create mail object from raw mail
mail = email.message_from_bytes(body)
# extract some usefull mail headers
mail_subject = mail.get('Subject')
# get sender email address
mail_from = email.utils.parseaddr(mail.get('From'))[1]
# if from matches specified address ...
if mail_from.lower() == MAILFROM.lower():
print("INFO -> Processing new message from '" + mail_from + "' with subject: '" + mail_subject + "'")
print("Making post request ... ")
# payload for post request
payload = {"fields":{"project":{"key":"TEST"},"summary":"REST ye merry gentlemen.","description":"Creating of an issue using project keys and issue type names using the REST API","issuetype":{"name":"Bug"}}}
# make post request with json data and basic authentication
result = requests.post("http://localhost:8080/rest/api/2/issue/",json=payload,auth=('user', 'pass'))
# show result returned
print("Result: " + result.text)
# mark mail as 'seen'
conn.store(msg,'+FLAGS','\\SEEN')
else:
print('INFO -> No unseen messages in INBOX.')
# close connection
conn.close()
conn.logout()
except Exception as ex:
exc_type, exc_obj, exc_tb = sys.exc_info()
fname = os.path.split(exc_tb.tb_frame.f_code.co_filename)[1]
print(exc_type, fname, exc_tb.tb_lineno)
Grüße Uwe