---
title: "Joomla e OAuth2: come inviare le email del sito con Gmail e Microsoft365 senza password - Pixed"
description: "Da Joomla 6.2 il sito invia email con OAuth2, senza salvare la password: la configurazione passo passo con Gmail, Google Workspace e Outlook.com."
url: "https://www.pixed.it/pixed-blog/joomla/joomla-oauth2-smtp-gmail-microsoft"
language: "it-it"
published: "2026-10-07T12:50:48Z"
modified: "2026-10-09T13:56:09Z"
---

# Joomla e OAuth2: come inviare le email del sito con Gmail e Microsoft365 senza password

Ultimo aggiornamento: 09 Ottobre 2026

⏱ tempo di lettura

Il modulo contatti dice "messaggio inviato" ma le email non arrivano più? Google e Microsoft stanno chiudendo l'invio con semplice nome utente e password, e per Microsoft 365 la scadenza è a fine dicembre 2026. Con Joomla 6.2 puoi finalmente usare **OAuth2** direttamente dalla Configurazione globale, senza estensioni. Vediamo come configurarlo con Gmail e Google Workspace e con Microsoft 365.

In breve

- Da Joomla 6.2 il core invia email con **OAuth2**: il sito non conosce più la password della casella.
- Si registra un'app nella console di **Google** o di **Microsoft**, si copiano i dati in Joomla e si autorizza una volta sola.
- Con Gmail **pubblica l'app** o smette di funzionare dopo 7 giorni; con Microsoft 365 **segna in calendario la scadenza del secret**.
- Con una casella **Outlook.com o Hotmail gratuita** oggi la strada è in salita: meglio usare un'altra casella.

Testato su Joomla 6.2+.

Joomla

1. [Copia l'URL di callback](#joomla)
2. [Autorizza e prova](#prova)

Gmail / Workspace

1. [Crea il progetto](#g1)
2. [Configura l'app](#g2)
3. [Aggiungi l'ambito Gmail](#g3)
4. [Crea il client OAuth](#g4)
5. [Pubblica l'app](#g5)
6. [Compila i campi mail su Joomla](#g6)
7. [Richiedi il token](#prova)

Microsoft 365

1. [Registra l'app](#m1)
2. [Crea il client secret](#m2)
3. [Aggiungi le autorizzazioni](#m3)
4. [Attiva SMTP autenticato](#m4)
5. [Compila i campi mail su Joomla](#m5)
6. [Richiedi il token](#prova)

## Perché nome utente e password non bastano più?

Per anni abbiamo configurato l'SMTP di Joomla allo stesso modo: server, porta, nome utente e password della casella. Funzionava, ma aveva un difetto grosso: la password della tua email stava scritta nel *configuration.php* del sito. Se qualcuno entrava nel sito, si portava via anche la casella.

Google e Microsoft stanno chiudendo questa porta, con tempi diversi:

- **Outlook.com e Hotmail**: l'accesso con password, comprese le password per le app, è stato spento il 16 settembre 2024. Oggi l'unico modo per inviare via SMTP è OAuth2.
- **Microsoft 365**: l'autenticazione con password per SMTP verrà disattivata di default a fine dicembre 2026, e la data di rimozione definitiva sarà annunciata nel 2027.
- **Gmail e Google Workspace**: l'accesso con la sola password non è più accettato; per gli account personali con la verifica in due passaggi funzionano ancora le password per le app.

OAuth2 funziona in un altro modo. In parole povere: invece di dare al sito le chiavi di casa, gli dai una chiave che apre solo la buca delle lettere. Il sito riceve un *token* (un codice di accesso) che serve solo a spedire email, e che puoi revocare in qualsiasi momento dal tuo account Google o Microsoft senza cambiare password.

Il mio consiglio è quindi questo:

- Casella **Microsoft 365** aziendale: **passa a OAuth2 prima di fine dicembre 2026**.
- Casella **Outlook.com o Hotmail** gratuita: OAuth2 sarebbe l'unica strada, ma con Joomla oggi **non te la consiglio**. Ti spiego il perché [più sotto](#outlook).
- **Gmail o Workspace** che oggi funzionano con una password per le app: **non c'è fretta**, ma OAuth2 è più sicuro e lo puoi fare con calma.
- Casella sul **server SMTP del tuo hosting** (quella del tuo dominio, per intenderci): **non ti serve**, resta con nome utente e password.

## Di cosa abbiamo bisogno?

- Joomla **6.2 o successivo** e un accesso da **Super Utente**.
- Una casella dedicata al sito, per esempio *noreply@* o *sito@*: meglio non usare la tua casella personale.
- L'accesso alla console di Google o al portale di Microsoft **con lo stesso account** della casella (per Workspace e Microsoft 365 serve un amministratore).
- Il sito in **HTTPS**, oppure in locale su *localhost* (ne parlo più sotto).
- Un posto sicuro, per esempio un password manager, dove salvare Client ID e Client Secret.

## Da dove partiamo?

Partiamo da Joomla, perché ci serve un dato da incollare nella console del provider: l'**URL di callback**, cioè l'indirizzo a cui Google o Microsoft rimandano il browser dopo che hai dato il consenso.

1. Andiamo in **Sistema → Configurazione globale → Server**, nella sezione della posta, in fondo.
2. In **Funzione Mail** scegliamo **SMTP**.
3. In **Auth SMTP** scegliamo **OAuth 2.0**.
4. Compare il riquadro **Informazioni OAuth2** con il link alla [documentazione ufficiale di Joomla sull'invio con OAuth 2.0](https://guide.joomla.org/user-manual/configuration/sending-email-using-oauth-2-0) e l'**URL di callback**. Copialo e sostituisci *\[domain\]* con il dominio del sito.

L'indirizzo ha questa forma:

```
https://www.tuosito.it/administrator/index.php?option=com_config&task=mail.oauth2callback&format=raw
```

Il dominio deve essere **identico** a quello con cui entri nel pannello di amministrazione: con o senza *www*, sempre in *https*. Una lettera di differenza e Google o Microsoft rifiutano l'autorizzazione.

![Configurazione globale di Joomla 6.2 con l'autenticazione SMTP impostata su OAuth 2.0, l'URL di callback e i campi Client ID, Client Secret, Scope, URL di autorizzazione e URL del token OAuth2](https://www.pixed.it/images/blog/oauth2/schermata-configurazione-oauth2.jpg)

Qui sotto trovi i campi che compileremo alla fine. Vediamo a cosa servono:

| Campo | Cosa ci va |
|---|---|
| Nome utente SMTP | l'indirizzo email della casella che autorizzerai; deve essere uguale all'**Email mittente** |
| Client ID OAuth2 | il codice pubblico dell'app che crei nella console |
| Client Secret OAuth2 | il codice segreto dell'app; per cambiarlo si clicca su **Modifica** |
| Scope OAuth2 | il permesso che chiediamo: solo l'invio della posta |
| URL di autorizzazione OAuth2 e URL del token OAuth2 | gli indirizzi del provider, diversi tra Google e Microsoft |
| Token OAuth2 | lo stato dell'autorizzazione: finché manca il Client ID mostra l'avviso "Per richiedere il token serve il Client ID OAuth2" |

Ora scegli la tua strada: [Gmail o Google Workspace](#g1) oppure [Microsoft 365](#m1).

## Come si configura con Gmail o Google Workspace?

Lato Google c'è una sola scelta da fare bene: il tipo di pubblico dell'app. Se la casella è su un dominio **Google Workspace** scegli **Interno**, ed è il caso più semplice. Se è un **Gmail gratuito** scegli **Esterno** e non saltare il passaggio G5.

### G1 Creiamo il progetto

1. Apriamo [la pagina di creazione progetto della Google Cloud Console](https://console.cloud.google.com/projectcreate), entrando con l'account della casella.
2. Diamo un nome riconoscibile, per esempio "Email sito tuosito", e clicchiamo su **Crea**.
3. Controlliamo che il progetto sia selezionato nel menu in alto.
4. Andiamo dal menu di sinistra in **API e Servizi** **→ Schermata Consenso OAuth**

![Menu API e servizi della Google Cloud Console con la voce Schermata consenso OAuth](https://www.pixed.it/images/blog/oauth2/schermata-consenso-oauth.jpg)

### G2 Configuriamo l'app

1. Clicchiamo su **Inizia**
2. Inseriamo il **nome dell'app** (quello che vogliamo) e la nostra **email di assistenza** (va benissimo il nostro normale indirizzo email).
3. **ATTENZIONE:** Come pubblico scegliamo **Interno** (Workspace) o **Esterno** (Gmail gratuito).
4. Inseriamo l'email di contatto (va bene la stessa email di prima), accettiamo le norme e clicchiamo su **Crea**.

Ecco la schermata seguente, dove ci sarà il link del punto G3:

![schermata con il link accesso ai dati](https://www.pixed.it/images/blog/oauth2/link-accesso-ai-dati.jpg)

### G3 Aggiungiamo l'ambito Gmail

1. Andiamo in **Accesso ai dati** e clicchiamo su **Aggiungi o rimuovi ambiti**.
2. Nel campo per aggiungere gli ambiti a mano incolliamo `https://mail.google.com/`, poi **Aggiungi alla tabella**, **Aggiorna** e **Salva**.

Google lo classifica come ambito "limitato": è normale, è l'unico che permette di inviare via SMTP.

![inseriamo mail.google.com nella casella in fondo e clicchiamo su aggiungi alla tabella](https://www.pixed.it/images/blog/oauth2/aggiungi-manualmente.jpg)

### G4 Creiamo il client OAuth

1. Andiamo in **Client** e clicchiamo su **Crea client**.
2. Come tipo scegliamo **Applicazione web**.
3. In **URI di reindirizzamento autorizzati** incolliamo l'URL di callback copiato da Joomla.
4. Clicchiamo su **Crea** e copiamo subito **ID client** e **Client secret**: il secret poi non sarà più visibile per intero.

![inserire url copiato dal config di joomla. Funziona anche localhost senza https](https://www.pixed.it/images/blog/oauth2/uri-sito-oppure-localhost.jpg)

Se stai provando su un sito in locale (WAMP, XAMPP, Laragon), al punto 3 l'indirizzo cambia. Google accetta **http** senza certificato e l'indirizzo IP solo per **localhost**, quindi l'URL sarà più o meno così:

```
http://localhost/miosito/administrator/index.php?option=com_config&task=mail.oauth2callback&format=raw
```

Attenzione a tre cose:

- la **cartella del sito** (qui */miosito*) e l'eventuale **porta** (es. *localhost:8080*) devono esserci, uguali a quelle che vedi nella barra del browser quando sei nel pannello di amministrazione;
- *localhost* e *127.0.0.1* per Google sono due indirizzi diversi: usa lo stesso con cui entri in Joomla;
- i domini locali inventati, come *miosito.test* o *miosito.local*, **non vengono accettati**: Google vuole un dominio pubblico vero oppure localhost.

Nello stesso client puoi aggiungere più URI: con **Aggiungi URI** metti subito anche quello del sito online, così quando lo pubblichi non devi creare un client nuovo.

### G5 Pubblichiamo l'app (solo Gmail gratuito)

Andiamo in **Pubblico**, clicchiamo su **Pubblica app** e confermiamo. Lo stato deve diventare **In produzione**.

**Attenzione:** se l'app resta "In fase di test", Google fa scadere l'autorizzazione dopo **7 giorni** e il sito smette di inviare senza dirti niente. Pubblica l'app **prima** di autorizzare in Joomla. Non serve chiedere la verifica a Google: l'app la usi solo tu.

### G6 Compiliamo Joomla

| Campo | Valore per Gmail e Workspace |
|---|---|
| Email mittente / Nome utente SMTP | l'indirizzo Gmail o Workspace che autorizzerai |
| Host SMTP | `smtp.gmail.com` |
| Porta SMTP / Sicurezza SMTP | `587` / STARTTLS |
| Client ID OAuth2 e Client Secret OAuth2 | quelli del passaggio G4 |
| Scope OAuth2 | `https://mail.google.com/` |
| URL di autorizzazione OAuth2 | `https://accounts.google.com/o/oauth2/v2/auth` |
| URL del token OAuth2 | `https://oauth2.googleapis.com/token` |

Una volta in produzione, il token non scade da solo, con due eccezioni: se il sito non invia email per circa **sei mesi**, o se **cambi la password** dell'account Google. In entrambi i casi basta autorizzare di nuovo.

### G7 Richiediamo il token

**Non abbiamo ancora finito.** Finora Joomla sa a chi chiedere il permesso, ma il permesso non l'ha ancora ottenuto: senza questo passaggio le email non partono. La procedura è uguale per Google e per Microsoft, quindi la trovi più sotto, in [Autorizziamo e facciamo la prova](#prova). La parte su Microsoft puoi saltarla.

## E se la casella è su Microsoft 365?

Se usi Gmail o Workspace questa parte non ti serve: vai direttamente ad [autorizzare e provare](#prova).

Con Microsoft si lavora nel **centro di amministrazione di Microsoft Entra**, lo strumento con cui Microsoft gestisce le app che accedono agli account dell'organizzazione. Serve un account **amministratore** del tuo Microsoft 365.

**Una premessa onesta:** questa parte non ho potuto provarla su un Microsoft 365 aziendale. I passaggi e i valori seguono la [documentazione ufficiale di Joomla](https://guide.joomla.org/user-manual/configuration/sending-email-using-oauth-2-0) e quella di Microsoft. Se qualcosa non torna, scrivimi e aggiorno l'articolo.

Due cose prima di iniziare. Microsoft chiede la **verifica in due passaggi** per entrare nei portali di amministrazione: se compare la schermata "Sono necessarie altre informazioni", è la richiesta di configurarla e va completata. E se nel browser sei già collegato con un altro account Microsoft, il portale entra con quello: usa una finestra in incognito oppure clicca su **Usa un account diverso**.

### M1 Registriamo l'app

1. Apriamo [il centro di amministrazione di Microsoft Entra](https://entra.microsoft.com/) ed entriamo con l'account amministratore.
2. Andiamo in **Registrazioni app → Nuova registrazione**.
3. Diamo un nome, per esempio "Email sito tuosito.it".
4. In **Tipi di account supportati** scegliamo **Account solo in questa directory organizzativa**.
5. In **URI di reindirizzamento** scegliamo la piattaforma **Web**, incolliamo l'URL di callback di Joomla e clicchiamo su **Registra**.
6. Dalla **Panoramica** copiamo l'**ID applicazione (client)** e l'**ID directory (tenant)**: ci servono tutti e due.

Come con Google, per un sito in locale l'URI può essere `http://localhost/...`: Microsoft accetta *http* senza certificato solo per localhost.

### M2 Creiamo il client secret

1. Andiamo in **Certificati e segreti → Nuovo segreto client**, scegliamo la scadenza e clicchiamo su **Aggiungi**.
2. Copiamo la colonna **Valore**, non "ID segreto": viene mostrata una volta sola.

**Attenzione:** il segreto ha una **scadenza** (al massimo 24 mesi). Quel giorno il sito smette di inviare email. Segnati la data in calendario e, qualche giorno prima, crea un nuovo segreto e incollalo in Joomla con il pulsante **Modifica**.

### M3 Aggiungiamo le autorizzazioni

1. Andiamo in **Autorizzazioni API → Aggiungi un'autorizzazione → Microsoft Graph → Autorizzazioni delegate**.
2. Selezioniamo `SMTP.Send` e `offline_access` e clicchiamo su **Aggiungi autorizzazioni**.
3. Clicchiamo su **Concedi consenso amministratore per** (seguito dal nome della tua organizzazione) e confermiamo.

### M4 Attiviamo SMTP autenticato sulla casella

È il passaggio che si dimentica più spesso: l'autorizzazione OAuth2 da sola non basta se la casella ha l'invio SMTP disattivato.

1. Apriamo [l'interfaccia di amministrazione di Microsoft 365](https://admin.microsoft.com/).
2. Andiamo in **Utenti → Utenti attivi** e clicchiamo sulla casella mittente.
3. Nella scheda **Posta** apriamo **Gestisci le app di posta elettronica**, spuntiamo **SMTP autenticato** e salviamo. \[DA VERIFICARE: etichette italiane\]

La documentazione di Joomla avverte che le modifiche lato Microsoft possono richiedere **fino a circa un'ora** prima di diventare attive.

### M5 Compiliamo Joomla

| Campo | Valore per Microsoft 365 |
|---|---|
| Email mittente / Nome utente SMTP | l'indirizzo della casella che autorizzerai |
| Host SMTP | `smtp.office365.com` |
| Porta SMTP / Sicurezza SMTP | `587` / STARTTLS |
| Client ID OAuth2 e Client Secret OAuth2 | l'ID applicazione (M1) e il Valore del segreto (M2) |
| Scope OAuth2 | `https://outlook.office.com/SMTP.Send offline_access` |
| URL di autorizzazione OAuth2 | `https://login.microsoftonline.com/ID-TENANT/oauth2/v2.0/authorize` |
| URL del token OAuth2 | `https://login.microsoftonline.com/ID-TENANT/oauth2/v2.0/token` |

Al posto di `ID-TENANT` metti l'ID directory (tenant) copiato al passaggio M1. Nel campo Scope scrivi esattamente quei due valori separati da uno spazio: `offline_access` serve a Joomla per rinnovare il token da solo, senza chiederti di accedere di nuovo.

### M6 Richiediamo il token

Come per Google, manca l'ultimo passaggio: chiedere il permesso a Microsoft e provare l'invio. Lo trovi in [Autorizziamo e facciamo la prova](#prova).

### E con una casella Outlook.com o Hotmail gratuita?

Qui devo essere sincero: **con Joomla 6.2 oggi non funziona in modo affidabile**, e non per colpa di Joomla. Gli ostacoli sono tre.

- **Serve un'organizzazione Microsoft.** Con un semplice account Outlook.com non si possono più registrare app: Microsoft chiede di creare prima una directory, per esempio attivando un account Azure gratuito, che però vuole il numero di telefono e una carta di credito per la verifica.
- **L'URL di callback non piace a Microsoft.** Per le app che fanno accedere account personali come Outlook.com e Hotmail, Microsoft [non accetta indirizzi di ritorno con parametri](https://learn.microsoft.com/it-it/entra/identity-platform/reply-url), cioè con la parte dopo il punto interrogativo. L'URL di callback di Joomla è fatto quasi solo di parametri.
- **Anche superati questi due, l'invio può essere bloccato.** Sul forum di supporto di Microsoft diversi utenti con caselle Outlook.com create di recente segnalano l'errore `535 5.7.139`: l'invio SMTP è disattivato sulla casella e il titolare non ha nessuna impostazione per riattivarlo.

Il mio consiglio è quindi di **non usare una casella Outlook.com gratuita** per le email del sito. Meglio una casella sul **server del tuo hosting**, con il tuo dominio e nome utente e password, oppure Gmail o Google Workspace seguendo questa guida.

## Autorizziamo e facciamo la prova

Abbiamo compilato tutti i campi: adesso Joomla deve chiedere il token al provider. Se hai appena creato o modificato l'app nella console, però, non avere fretta: secondo la documentazione di Joomla le modifiche dal lato Google o Microsoft possono richiedere **fino a circa un'ora** per diventare attive. Se l'autorizzazione fallisce subito dopo aver creato l'app, aspetta e riprova prima di cercare l'errore.

1. Clicchiamo su **Salva**. Finché non c'è un Client ID, il campo **Token OAuth2** mostra solo un avviso.
2. Nel campo Token OAuth2 clicchiamo su **Richiedi token**.
3. Si apre la pagina di Google o Microsoft: entriamo con **l'account della casella mittente**. Se nel browser hai altri account aperti, controlla di scegliere quello giusto.
4. Con Gmail "Esterno" compare l'avviso "Google non ha verificato questa app". Clicchiamo su **Avanzate** e poi sul link per proseguire: l'app è la tua, puoi fidarti.
5. Accettiamo i permessi richiesti. Il browser torna in Joomla e compare il messaggio **Token OAuth2 ottenuto e salvato**.
6. Clicchiamo su **Invia email di prova** e controlliamo la casella.

**Attenzione:** l'**Email mittente** di Joomla deve coincidere con l'account che hai autorizzato. Altrimenti Google riscrive il mittente e Microsoft rifiuta il messaggio.

Il token viene salvato nella configurazione del sito, cioè nel *configuration.php*, come succedeva prima con la password SMTP. La differenza è che, se il file finisce nelle mani sbagliate, revochi il token con un clic e la casella resta al sicuro. Per revocarlo: da Google vai in [Account Google → App con accesso all'account](https://myaccount.google.com/permissions), da Microsoft elimina il segreto o l'intera app in Entra.

## Ho fatto tutto ma le email non partono!

Succede, don't panic. Nel 99% dei casi l'errore che ti mostra Joomla dice già dove guardare:

| Errore | Cosa significa e cosa fare |
|---|---|
| `redirect_uri_mismatch` (Google) `AADSTS50011` (Microsoft) | L'URL di callback nella console non è identico a quello di Joomla. Controlla *www* e *https* e ricopialo. |
| `access_denied` (Google) | L'app è in test e il tuo account non è tra gli utenti di prova: pubblicala (G5). |
| `invalid_grant` dopo qualche giorno | L'app Google è rimasta in test, oppure hai cambiato la password: pubblicala e autorizza di nuovo. |
| `AADSTS7000215` | Hai copiato l'"ID segreto" invece del Valore, oppure il segreto è scaduto: creane uno nuovo (M2). |
| `AADSTS65001` | Manca il consenso amministratore: torna al passaggio M3. |
| `535 5.7.3` | Autenticazione rifiutata: nome utente diverso dalla casella autorizzata, oppure scope scritto male. |
| `535 5.7.139` | SMTP autenticato è disattivato sulla casella o per tutta l'organizzazione: controlla il passaggio M4 e, se non basta, le impostazioni di sicurezza del tuo Microsoft 365. |
| `SMTP connect() failed` | L'hosting blocca le connessioni in uscita sulla porta 587: chiedi al supporto di sbloccarla. |

## Posso provarlo in locale prima di metterlo online?

Sì. Il sito non deve essere raggiungibile da internet: il ritorno dopo il consenso passa dal tuo browser, e il server deve solo poter uscire verso Google o Microsoft. Ci sono però alcune regole.

- Usa **http://localhost**, con la porta se ce l'hai (es. *localhost:8080*). I domini locali come *miosito.test* non vengono accettati come indirizzo di ritorno.
- Nella console puoi registrare **più URL di callback** per lo stesso client: aggiungi subito anche quello di produzione, ti servirà se dovrai autorizzare di nuovo dal sito online.
- Su WAMP o XAMPP, se compare l'errore *"SSL certificate problem: unable to get local issuer certificate"*, PHP non trova i certificati per collegarsi in HTTPS. Scarica un file *cacert.pem* aggiornato, indicalo in `php.ini` nelle voci `curl.cainfo` e `openssl.cafile`, e riavvia Apache.

Fine! Il tuo Joomla ora spedisce le email senza conoscere la password della casella. Come ultima prova, compila il modulo contatti dal sito pubblico come farebbe un visitatore e controlla che il messaggio arrivi.

**Buon invio!**

**P.S.**: se usi Microsoft 365, aggiungi adesso in calendario il promemoria per la scadenza del segreto. Tra due anni ti ringrazierai.

Se ti sei bloccato a metà, scrivimi: chi ti risponde è chi scrive il codice. [Contattami](https://www.pixed.it/contatti)

---

ti è piaciuto questo articolo? Condividilo!

dal blog

potrebbero interessarti:

[Tutti gli articoli](https://www.pixed.it/pixed-blog)
