Endpoind: https://api.amecom.it/sendmail/send
Lo scopo della API è creare un interfaccia astratta, condivisa e stabile per l'invio di posta elettronica.
L'API è progettata per riceve dati in formato JSON, secondo lo schema descritto. I messaggi vengono inseriti in una coda di invio e quindi spediti per posta elettronica ai destinatari.
https://api.amecom.it/sendmail/reload_whitelist
Il file JSON che descrive un messaggio è formato dalle seguenti proprietà
| Properità | Obbligatorio | Default | Descrizione |
|---|---|---|---|
| delivery | SI | Informazioni sulle modalità di invio. | |
| delivery.allow_duplicates | NO | false |
Il sistema prevede che email i cui campi
from.address,
to.address,
message.subject e
delivery.app
sono uguali in un arco temporale (variabile secondo impostazioni) vengano inviate una volta sola evitando l'invio di duplicati.
È possibile evitare questo comportamento, quindi permettere l'invio di duplicati, impostando questa proprietà su true.
|
| delivery.allow_reply | NO | true |
Se impostato a false viene impedito il reply al messaggio tramite l'header:
'Return-Path' = "<>" |
| delivery.app | SI | Nome dell'applicazione che invia il messaggio. | |
| delivery.datesend | NO | now | Questa proprietà può essere utilizzata per posticipare l'invio della email dopo una certa data. Il formato della data è YYYYMMDDHHMMSS il fuso orario deve essere UTC. Se non viene specificata la data o inserita una data nel passato il messaggio verrà inviata il prima possibile. |
| delivery.msgid_domain | NO |
Permette di specificare il dominio per la generazione del header Message-Id dell'email.
Se non specificato viene generato automaticamente dal sistema.
|
|
| delivery.priority | NO | 10 |
La priorità è utilizzanta internamente per indicare la priorità di invio nella coda messaggi.
Il valore è compreso tra 0 e 255, dove un valore maggiore ha priorità su un valore minore.
Tra i valori possibili il valore 0 ha un significato speciale:
le email con priorità = 0 sono inviate aggiungendo i seguenti attibuti:
'Precedence'= "bulk" |
| from | SI | Dizionario contenente le proprietà del mittente. Il mittente dovrebbe essere un account conosciuto dal server di posta elettronica. | |
| from.address | SI | Indirizzo email del mittente. | |
| from.name | NO | Nome visualizzato del mittente, se omesso corrisponde a from.address. | |
| message | SI | Dizionario contenente le informazioni del messaggio. | |
| message.alternate_text | NO | CONVERSIONE AUTOMATICA | Se il message.body è in formato HTML (message.body_is_html=True) è possibile specificare un testo alternativo in formato solo testo tramite questa proprietà. Se non viene inserito un testo alternativo avviene una conversione automatica. Se il message.body è in solo testo (message.body_is_html=False) questo campo viene ignorato. |
| message.body | SI | Corpo della email in formato HTML o TESTO. | |
| message.body_is_html | NO | false |
Se questa proprietà non viene impostata o viene impostata su false
si presume che il message.body sia testo semplice. Se il message.body
è in formato HTML è necessario indicarlo impostando questa proprietà su true.
|
| message.list_unsubscribe | NO | Se l'applicazione che invia le email prevede un url da cui è possibile bloccare la ricezione di ulteriori email qui è possbile inserire la url. In ogni caso è sempre necessario includere il link a questa pagina anche nel corpo della email. | |
| message.reference_id | NO | Se l'email è una risposta a un altro messaggio è possibile inserire qui l'id del messaggio originale. L'ID del messaggio NON DEVE CONTENERE i caratteri < e >. | |
| message.subject | SI | Oggetto della email. | |
| to | SI | Dizionario contenente le proprietà del destinatario. | |
| to.address | SI | Indirizzo email del destinatario. | |
| to.name | NO | Nome visualizzato del destinatario, se omesso corrisponde a to.address. |
La risposta della API informa se il messaggio è stato aggiunto alla coda eseguendo una verifica formale delle proprietà impostate. Non verifica che il messaggio sia effetivamente stato inviato o se è un duplicato.
In caso di successo l'API risponde
{
"status":200,
"message_id": IDMESSAGGIO
}
In caso di errore:
{
"status":500,
"error": ["messaggio", "messaggio"]
}
Può essere eseguito un controllo veloce sullo stato del messaggio senza acedere al file JSON di risposta attraverso lo status code della richiesta HTTP.
Per inserire un messaggio in coda di invio
occorre inviare una richiesta POST al url
/sendmail/send inserendo un file JSON negli Header
import requests
data = {
"from" :{
"address": "mittente@esempio.it"
},
"to" : {
"address" : "destinatario@esempio.it"
},
"message" : {
"subject": "Oggetto email",
"body": "Corpo del messaggio"
},
"delivery":{
"app": "NOME APPLICAZIONE"
}
}
response = requests.post("https://api.amecom.it/sendmail/send", json=data, timeout=3)
result = response.json()