> ## Content Index
> Fetch the complete content index at: https://blog.firenetwork.it/llms.txt
> Use this file to discover other available public pages before exploring further.

# Apprise - come inviare notifiche verso qualsiasi servizio di messaggistica
- URL: https://blog.firenetwork.it/apprise-come-inviare-notifiche-verso-qualsiasi-servizio-di-messaggistica/
- Published: 2025-09-02T11:08:36.000Z
- Updated: 2025-09-02T11:08:36.000Z
- Description: Scopri Apprise, lo strumento che unifica tutte le tue notifiche. Invia messaggi a email, Telegram, Slack e decine di altri servizi con una singola chiamata API. Semplifica i tuoi script, risparmia tempo e centralizza la gestione degli avvisi in un unico posto.
- Author: Samuele Gabbrielli
- Tags: Guide, Monitoraggio, #Import 2026-03-12 20:23

Se siete come me, vi è capitato almeno una volta di trovarvi in una di queste situazioni:

- State scrivendo uno script in **PowerShell** o in **Python** ed avete bisogno che questo invii una email, ma implementare questa funzionalità richiede più righe di codice di quelle della funzione principale dello script.
- Volete integrare il supporto all'invio di notifiche tramite **Telegram** ma non avete intenzione di installare le librerie necessarie e studiare la documentazione ufficiale per farlo.
- Dovete far sì che un programma invii **una mail** al vostro responsabile, un messaggio sul canale **Slack** del vostro reparto e -perché no- una **notifica sul vostro cellulare** ma implementare tre funzionalità diverse vi porterebbe via troppo tempo.

E se vi dicessi che esiste un software open-source che, esponendo un **endpoint API semplicissimo**, vi permette di fare tutto questo aggiungendo **una singola riga di codice**, **senza installare dipendenze**, e che si integra con una miriade di servizi di messaggistica?

Sto parlando di [**Apprise**](https://github.com/caronc/apprise?ref=blog.firenetwork.it), la manna dal cielo che vi risparmierà ore di studio, centinaia di righe di codice, e che vi salverà la sanità mentale.

Nello specifico, questa guida si concentrerà su **Apprise API**, la versione **webservice** di Apprise. Mentre Apprise nasce come strumento a riga di comando, la sua versione API lo trasforma in un potente *centralinista* per le notifiche, accessibile tramite semplici chiamate HTTP.

Entrambi i progetti sono stati creati dalla stessa persona, **Chris Caron** conosciuto su Github come [caronc](https://github.com/caronc?ref=blog.firenetwork.it).

![](https://blog.firenetwork.it/content/images/2025/06/Immagine-WhatsApp-2025-06-26-ore-19.35.25_07626ed9.jpg) 

## Prerequisiti

- Il metodo più semplice -nonché l'unico ufficialmente supportato- per installare **Apprise API** è tramite l'utilizzo di **Docker**, quindi **avrete bisogno di una istanza di Docker**.
- Affinché i vostri programmi possano inviare chiamate all'endpoint API di Apprise, è necessario che essi possano raggiungerlo. Di conseguenza, **se avete un firewall** tra i due endpoint, dovrete creare una **eccezione** sulla **porta 8000** (o quella che specificherete durante l'installazione).
- Per ogni servizio che avrete intenzione di collegare, sono necessari parametri diversi che potete trovare indicati nella [wiki del progetto **Apprise**](https://github.com/caronc/apprise/wiki?ref=blog.firenetwork.it). In questa guida vedremo un paio di esempi relativi a **Invio di email tramite SMTP** e **Invio di notifiche tramite Telegram**

![](https://blog.firenetwork.it/content/images/2025/06/luca-bravo-XJXWbfSo2f0-unsplash-1-.jpg) 

## Installazione

L'installazione di **Apprise API**, utilizzando **Docker**, è molto semplice. Vi basta creare un **docker-compose** ed utilizzarlo tramite l'omonimo comando:

- Create una cartella per il progetto. In questo esempio creeremo una cartella *apprise\_api* nella root del filesystem

```bash
sudo mkdir /apprise_api

```

- Adesso, all'interno di questa cartella, creiamo le cartelle **config**, **plugin** ed **attach** che serviranno rispettivamente a contenere le **configurazioni**, i **plugin custom** e gli **allegati**

```bash
sudo mkdir /apprise_api/config
sudo mkdir /apprise_api/plugin
sudo mkdir /apprise_api/attach

```

- Adesso creiamo il container di **Apprise API** col seguente comando **docker run**. Ricordatevi di indicare la porta TCP su cui Apprise API resterà in ascolto **{{PORT}}** ed i percorsi assoluti delle cartelle che avete creato al punto precedente (ai parametri **\-v**)

```bash
docker run --name apprise \
   -p {{PORT}}:8000 \
   -e PUID=$(id -u) \
   -e PGID=$(id -g) \
   -v /apprise_api/config:/config \
   -v /apprise_api/plugin:/plugin \
   -v /apprise_api/attach:/attach \
   -e APPRISE_STATEFUL_MODE=simple \
   -e APPRISE_WORKER_COUNT=1 \
   -d caronc/apprise:latest

```

Una volta che **Docker** avrà terminato di scaricare (**pull**) le immagini e di creare il container, potrete accedere alla Web UI di Apprise API accedendo a http://indirizzo.IP.di.Docker:porta

![](https://blog.firenetwork.it/content/images/2025/08/immagine-7.png)

![](https://blog.firenetwork.it/content/images/2025/06/thisisengineering-zBLtU0zbJcU-unsplash.jpg) 

## Configurazione

Configurare i vostri canali di notifica preferiti con Apprise è semplice come scrivere un file di testo... E lo dico perché effettivamente è proprio così che si fa!

- Premete su **Configuration Manager** nella barra laterale, poi sulla scheda **Configuration**.
- Qui vi consiglio, per prima cosa, di indicare **YAML** nel parametro **Format**. L'altra opzione (**TEXT**) a lungo andare è molto più confusionaria, mentre **la struttura del formato YAML** renderà la **consultazione** della configurazione **molto più semplice**.

![](https://blog.firenetwork.it/content/images/2025/08/immagine-8.png)

Adesso modifichiamo il nostro file di configurazione:

- Prima di tutto, abbiamo bisogno di una intestazione:

```yaml
urls:

```

- Dentro a questa intestazione, per ogni canale di notifica da censire, creeremo un oggetto dando *due spazi* e il carattere `-`, seguito da un ulteriore spazio ( `-` ).

```yaml
urls:
  - 

```

❓

****Perchè questi spazi?**  
YAML è un ****linguaggio di Markup** che ****si basa sulla corretta identazione** del suo contenuto. Inoltre, seguire queste regole di identazione ****semplifica enormemente la leggibilità** di questo file.

## Canale di notifica (**email**)

- Adesso andiamo ad indicare ad Apprise quale canale di notifica vogliamo usare, indicandone l'identificativo seguito da `://`, come se fosse un protocollo (alla fine... lo è!). In questo esempio, configuro l'integrazione **email**

```yaml
urls:
  - mailtos://

```

💡

L'identificativo di ogni protocollo è reperibile nella [Wiki di Apprise](https://github.com/caronc/apprise/wiki?ref=blog.firenetwork.it), per ogni servizio di notifica, alla voce ****Syntax**.

- Ora arriva la parte difficile. A seconda del provider di posta che stiamo usando, possiamo evitare di indicare certi parametri. Ecco alcuni esempi:

‼️

****ATTENZIONE: Sicurezza delle Credenziali**  
Stai per inserire le tue credenziali in quello che, alla fine, è un file di testo. ****Assicurati che l'accesso alla configurazione di Apprise sia adeguatamente protetto.**

### Yahoo

```yaml
urls:
  - mailtos://{utente}:{password}@yahoo.com?to=email@del.destinatario

```

Il campo **utente** è la parte dell'indirizzo Yahoo prima della @, per esempio in tizio.caio@yahoo.com l'utente da indicare è **tizio.caio**

### Gmail

```yaml
urls:
  - "mailtos://{utente}:{password}@gmail.com?to=email@del.destinatario"

```

Il campo **utente** è la parte dell'indirizzo Gmail prima della @, per esempio in tizio.caio@gmail.com l'utente da indicare è **tizio.caio**.

A differenza dell'esempio relativo a Yahoo, nota come la stringa sia racchiusa tra virgolette. Questo perché le **App Password** di Google contengono spazi, e per evitare errori di parsing è sempre necessario racchiudere la stringa tra virgolette.

💡

Se vuoi altre informazioni riguardo a questo ed altri problemi relativi -per esempio- alla presenza di caratteri speciali, puoi cercare tra i metodi di ****URL Encoding**.

Alla data di scrittura di questa guida, per questo tipo di autenticazione, Google richiede di **aver impostato la 2FA** sul proprio account Google e **l'utilizzo di una** "**App Password**", invece della password dell'account Google. Vediamo insieme i passaggi per abilitare la **2FA** ed ottenere una **App Password**:

- Accedete a https://myaccount.google.com
- Dal menu di sinistra, selezionate **Sicurezza**
- Nella sezione **Come accedi a Google**, selezionare **Verifica in due passaggi** e seguire la procedura guidata per attivare la 2FA
- Accedete ora a https://myaccount.google.com/apppasswords
- Date un nome all'app (ad esempio, **Apprise**)
- Copiate in un posto sicuro la vostra **App Password**, perché una volta premuto su **Fine** questa non verrà più mostrata

❗

****Fai attenzione!**  
Anche gli spazi fanno parte della ****App Password**, non cancellateli!

### Altri provider email non direttamente supportati

Il vostro provider email non è nella lista dei servizi Built-In?  
Non vi preoccupate, **Apprise** è estremamente versatile. Tuttavia dovremo dargli qualche parametro in più:

```yaml
urls:
  - mailtos://{utente}:{password}@{dominio}:{porta}?smtp={indirizzo.server.smtp}&to=email@del.destinatario:

```

Indicate la **porta** solamente se diversa dalla default (465) e, in quel caso, omettete anche il carattere `:`.

## Utilizzo dei **Tag**

Avete fatto caso che in fondo alla riga del canale di notifica c'è il carattere `:`? Questo perché non basta configurare un canale di notifica, ma è necessario anche assegnargli un *tag*.

Più canali di notifica possono avere lo stesso *tag*, ed un canale di notifica può avere più *tag*.

I *tag* vengono utilizzati durante le chiamate API per indicare ad Apprise quali canali si vogliono notificare.

Facciamo un esempio pratico:

- Per le email di **errore**, dobbiamo notificare:
  - Il **reparto tecnico**
  - Il **responsabile**
- Per le mail di **avviso**, dobbiamo notificare:
  - Il **reparto tecnico**

Invece di creare regole e parametri complessi per gestire queste casistiche, ci basta usare due tag:

```yaml
urls:
  - mailtos://{utente}:{password}@{dominio}?to={indirizzo@reparto.tecnico}
    - tag: avviso, errore
  - mailtos://{utente}:{password}@{dominio}?to={indirizzo@del.responsabile}
    - tag: errore

```

In questo modo, inviando una chiamata API col tag **avviso** notificheremo solo il reparto tecnico, e indicando il tag **errore** avviseremo sia il reparto tecnico che il responsabile, tutto con una sola chiamata HTTP!

Se poi il responsabile vuole essere notificato **anche sulla sua mail personale** (ma lo stesso si applica anche a un canale di notifica diverso dalla email) basta creare due canali e dargli lo stesso tag:

```yaml
urls:
  - mailtos://{utente}:{password}@{dominio}?to={indirizzo@reparto.tecnico}
    - tag: avviso, errore
  - mailtos://{utente}:{password}@{dominio}?to={indirizzo@del.responsabile}
    - tag: errore
  - mailtos://{utente}:{password}@{dominio}?to={indirizzo_personale@del.responsabile}
    - tag: errore

```

## Canale di notifica (**Telegram**)

La configurazione del canale di notifica **Telegram** richiede molti meno parametri rispetto a quello delle email. Ci servono solo un **Bot Token** e uno o più **Chat ID** per indicare i destinatari.

Non sai di cosa stiamo parlando? Trovi tutte le informazioni sulla mia guida relativa alla creazione di un Bot di Telegram:

[Come creare un Bot TelegramIn questa guida vedremo insieme i passaggi per creare un bot Telegram personale, che potremo poi utilizzare per ricevere notifiche automatizzate da servizi come UptimeKuma o Apprise.![](https://blog.firenetwork.it/content/images/icon/fireblog.png)Firenetwork - BlogSamuele Gabbrielli![](https://blog.firenetwork.it/content/images/thumbnail/Copilot_20250821_184248-1.png)](https://blog.firenetwork.it/come-creare-un-bot-telegram/)

Di seguito un esempio di configurazione

```yaml
urls:
  - tgram://BOT:TOKEN/CHATID:
    - tag: telegram_singolo

```

Nel caso di più destinatari, invece:

```yaml
urls:
  - tgram://BOT:TOKEN/CHATID1/CHATID2/.../CHATIDN:
    - tag: telegram_multiplo

```

Di default, il messaggio viene inviato in testo semplice. Se volete formattare il messaggio tramite **HTML** o **Markdown**, potete aggiungere il parametro **format** come nell'esempio seguente:

```yaml
urls:
  - tgram://BOT:TOKEN/CHATID1/CHATID2/.../CHATIDN/?format=markdown:
    - tag: telegram_markdown
  - tgram://BOT:TOKEN/CHATID1/CHATID2/.../CHATIDN/?format=html:
    - tag: telegram_html

```

💡

Se non specificate il formato qui, potrete comunque indicarlo durante la vostra chiamata ad ****Apprise API**

## Test di funzionamento dei canali impostati

Per testare il funzionamento dei canali che avete configurato, potete usare le comode funzionalità **Review** e **Notifications** nelle relative schede dentro a **Configuration Manager**:

- Dentro a **Configuration Manager**, selezionate la scheda **REVIEW**

![](https://blog.firenetwork.it/content/images/2025/08/immagine-9.png)

- Selezionate uno o più dei tag che avete configurato (selezionando il tag **all** selezionerete tutti i canali configurati)
- Adesso spostatevi nella scheda **NOTIFICATIONS**

![](https://blog.firenetwork.it/content/images/2025/08/immagine-10.png)

- Scrivete il testo del vostro messaggio in **Body**
- Opzionalmente, indicate un titolo per la notifica in **Title** (nel caso di una email, questo sarà l'**oggetto** della mail)
- Premete su **SEND NOTIFICATION**
- Se avete configurato tutto correttamente, dovreste ricevere una notifica coi valori impostati

![](https://blog.firenetwork.it/content/images/2025/08/immagine-11.png)

![](https://blog.firenetwork.it/content/images/2025/08/photo-1524514587686-e2909d726e9b.png) 

## Utilizzo tramite API HTTP

Adesso arriva la parte migliore: implementare tutto questo nel vostro ambiente.

Trattandosi di un endpoint **HTTP**, che richiede l'invio di una chiamata **POST**, possiamo usare una miriade di metodi e comandi diversi per inviare notifiche tramite **Apprise API**.

Inoltre se andate su **Configuration Manager**, alla scheda **OVERVIEW**, troverete degli esempi già valorizzati con l'indirizzo **IP**, la **porta** ed il **Configuration ID** che state usando.

Il **Configuration ID** è l'identificativo univoco della tua configurazione. Lo trovi nella scheda **OVERVIEW** del **Configuration Manager**, già inserito negli URL di esempio.

Vediamo un paio di esempi utilizzando **curl**

## Inviare un messaggio **semplice**

Ci bastano quattro righe (o una, se ci piacciono gli spaghetti nel codice):

```bash
curl -X POST \
	-F "body=Testo del messaggio" \
	-F "tags=tag_destinatari" \
	http://indirizzo.IP.di.Apprise:porta/notify/IdConfigurazione

```

## Inviare un messaggio in **Markdown**

In questo caso, basta aggiungere il parametro **format**:

```bash
curl -X POST \
	-F "body=Testo del messaggio" \
	-F "tags=tag_destinatari" \
	-F "format=markdown" \
	http://indirizzo.IP.di.Apprise:porta/notify/IdConfigurazione

```

## Inviare un messaggio **con allegato**(i)

Per aggiungere uno o più allegati, è necessario usare i parametri **attach**:

```bash
curl -X POST \
	-F "body=Testo del messaggio" \
	-F "tags=tag_destinatari" \
	-F attach1=@/percorso/dell/allegato1.txt \
	-F attach2=@/percorso/dell/allegato2.pdf \
	http://indirizzo.IP.di.Apprise:porta/notify/IdConfigurazione

```

![](https://blog.firenetwork.it/content/images/2025/07/benjamin-davies-FiZTaNTj2Ak-unsplash.jpg) 

## Conclusioni

Come potete notare, non avremo mai più bisogno di indicare i **parametri di invio email**, il **Bot Token** o i **Client ID**, perché rimane tutto salvato sulla configurazione di **Apprise API** e possiamo andarla a richiamare tramite i *tags*.

Inoltre, trattandosi di una API, potremo usare **Apprise API** **da più dispositivi e script** senza configurarne più istanze!

Adesso che avete tutti i canali di notifica a disposizione da un solo endpoint, **il limite è la vostra immaginazione**.

Personalmente, **Apprise mi ha salvato in più di una occasione** quando un software che stavo usando aveva **opzioni limitatissime per l'invio email**, e durante lo sviluppo di vari programmi in cui **le notifiche erano importanti ma non abbastanza da giustificare ore di ricerca e sviluppo** per implementarle.

Spero che **Apprise** vi sia utile come lo è stato per me!

---

![](https://blog.firenetwork.it/content/images/2025/06/Written-By-Human-Not-By-AI-Badge-white@2x-4.png)