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…