Vai al contenuto principale

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+.

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.
  • 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 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

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 oppure Microsoft 365.

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, 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

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

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

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

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. 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.

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 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 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.
  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.

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, 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, 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


ti è piaciuto questo articolo? Condividilo!

dal blog
potrebbero interessarti: