Ceci est une ancienne révision du document !
API en Python
Cas de Mailgun
https://documentation.mailgun.com/en/latest/api-events.html#events
jsonrpc
1 endroit, 1 méthode, des paramètres
import json import requests
On créer une sesssion (si plusieurs simultannée)
session= LSession(url,api,key)
Clef de Session
request.post : pour lancer la requete
request.get(url/endpoint)
Le endpoint définit ce que l'on veut.
json(string) → renvoie un dictionnaire
request.json() → renvoie un dictionnaire
def get-logs renvoie une reponse de type response
response.json() : est un dictionnaire.
Exemple python fourni par mailGun :
"""View a message using its Mailgun storage key.""" import os import sys import requests if len(sys.argv) != 2: print "Usage: retrieve.py message_key" sys.exit(1) api_key = YOUR_API_KEY # output filename filename = "message.eml" # url for retrieval domain = "mailgun.com" key = sys.argv[1] url = "https://api.mailgun.net/v3/domains/%s/messages/%s" url = url % (domain, key) headers = {"Accept": "message/rfc2822"} # request to API r = requests.get(url, auth=("api", api_key), headers=headers) if r.status_code == 200: with open(filename, "w") as message: message.write(r.json()["body-mime"]) os.system("thunderbird -file %s" % filename) else: print "Oops! Something went wrong: %s" % r.content
Pour les bounces
def get_bounces (): return requests.get("https://api.mailgun.net/v3/YOUR_DOMAIN_NAME/bounces",auth=("api","YOUR_API_KEY"))
On peut varier les endpoints (events…)
Et la réponse reçue :
200 { "items": [ { "address": "alice@example.com", "code": "550", "error": "No such mailbox", "created_at": "Fri, 21 Oct 2011 11:02:55 GMT" }, ... ], "paging": { "first": <first page URL>, "next": <next page URL>, "previous": <previous page URL>, "last": <last page URL> } }
A détailler…