Configurer les e-mails OAuth2 Microsoft 365 dans Dolibarr

Guide complet de mise en place de l’authentification moderne pour l’envoi d’e-mails depuis Dolibarr via Microsoft 365. Couvre les deux modes : boîte unique (global) et MultiSMTP par utilisateur.

Édition avril 2026 · Dolibarr v23+ · Public : Administrateurs Dolibarr / IT

Vue d’ensemble — La procédure en 4 phases

L’installation s’enchaîne dans cet ordre strict. Les phases 1 et 2 sont réalisées côté Microsoft, les phases 3 et 4 côté Dolibarr.

1 Azure / Entra ID

Inscrire l’application, récupérer Client ID + Secret + Tenant ID, configurer les permissions API.

2 Microsoft 365 Admin

Activer SMTP authentifié sur la boîte cible. Obligatoire même avec OAuth2.

3 Dolibarr — OAuth

Activer le module OAuth, créer le service Microsoft Exchange Online, générer le token.

4 Dolibarr — Mails

Paramétrer la méthode d’envoi, le serveur SMTP, l’identifiant et le service OAuth. Tester.

Quel mode choisir ?

Mode global — une boîte pour tout Dolibarr

  • Tous les utilisateurs envoient depuis la même adresse
  • Configuration unique, une seule App Registration Azure
  • Adapté aux petites équipes ou envois automatisés

Mode MultiSMTP — une boîte par utilisateur

  • Chaque collaborateur envoie depuis sa propre adresse
  • Module MultiSMTP requis
  • Un service OAuth par boîte (suffixes -jdupont, -mmartin…)
  • Adapté aux équipes commerciales, support, secrétariat

Phase 1 — Inscrire l’application dans Microsoft Entra ID (Azure AD)

Cette phase est unique pour toute l’organisation, même en mode MultiSMTP. Une seule App Registration Azure suffit.

Accéder au portail Microsoft Entra Se connecter à entra.microsoft.com (recommandé) ou portal.azure.comMicrosoft Entra ID.
Créer l’inscription d’application Identité → Applications → Inscriptions d’applications → Nouvelle inscription
Nom                  = Dolibarr OAuth
Types de comptes     = Comptes dans cet annuaire uniquement
URI de redirection   = Web — laisser vide pour l'instant
Valider. La page Vue d’ensemble s’affiche.
Récupérer les identifiants Sur la page Vue d’ensemble, copier et conserver :
ID d'application (client)    → Client ID
ID de l'annuaire (locataire) → Tenant ID
Générer le secret client Certificats & secrets → + Nouveau secret client — durée 24 mois recommandée.
⚠ Important Copier immédiatement la « Valeur » du secret (pas l’ID). Elle ne sera plus jamais affichée. Notez aussi la date d’expiration — il faudra la renouveler avant cette date.
Configurer les permissions API — étape critique Autorisations de l’API → + Ajouter une autorisation → Office 365 Exchange Online → Autorisations déléguées
⚠ Exchange Online uniquement — pas Microsoft Graph Un token Graph valide sera refusé par le serveur SMTP avec une erreur 535. Il faut obligatoirement utiliser Office 365 Exchange Online.
Ajouter ces permissions :
SMTP.Send              # envoi SMTP
IMAP.AccessAsUser.All  # réception IMAP (optionnel)
User.Read              # identification du compte
offline_access         # refresh_token automatique — indispensable
Puis cliquer sur « Accorder un consentement d’administrateur pour [organisation] » et confirmer. Chaque permission doit passer au vert.
⚠ Sans ce consentement, le token sera émis mais refusé à l’envoi.

Phase 2 — Activer SMTP authentifié sur la boîte Microsoft 365

⚠ Étape souvent oubliée — responsable de 80 % des échecs 5.7.139 OAuth2 remplace le couple login/mot de passe, mais pas la capacité d’authentifier en SMTP. Sans cette case cochée, le serveur refuse la connexion AUTH XOAUTH2 même avec un token valide.
Se connecter à admin.microsoft.com avec un compte administrateur global ou Exchange.
Ouvrir la boîte concernée
Utilisateurs → Utilisateurs actifs → sélectionner le compte expéditeur.
Activer SMTP authentifié
Onglet Courrier → Gérer les applications de courrier → cocher SMTP authentifié → Enregistrer.
Mode MultiSMTP : répéter cette étape pour chaque boîte qui sera utilisée comme expéditeur.
Si l’option est grisée : vérifier dans le Centre d’admin Exchange → Paramètres → Courrier que Disable SMTP AUTH for the organization n’est pas activé. Une politique Conditional Access peut aussi bloquer SMTP.

Phase 3a — Configurer OAuth dans Dolibarr (mode global)

À suivre si vous avez choisi le mode global (une boîte pour tout Dolibarr). Pour le mode MultiSMTP, voir la Phase 3b.

Activer le module OAuth
Accueil → Configuration → Modules → rechercher OAuth → activer.
Créer le service OAuth Microsoft
Configuration → OAuth → Onglet Services OAuth → Ajouter
Fournisseur   = Microsoft Exchange Online [SMTP/IMAP]
ID Client     = [Application client ID — phase 1.3]
Secret Client = [Valeur du secret — phase 1.4]
Locataire     = [Tenant ID — phase 1.3]
Cocher les étendues (scopes) :
☑ SMTP.Send
☑ IMAP.AccessAsUser.All  # uniquement si IMAP nécessaire
☑ User.Read
☑ offline_access          # indispensable pour le refresh_token
Choisir le bon fournisseur : sélectionner Microsoft Exchange Online [SMTP/IMAP] et non l’ancien Microsoft [outlook.office365].
Configurer l’URL de redirection côté Azure
Dolibarr affiche une URL de redirection. La copier, puis dans Azure : Authentification → + Ajouter un URI de redirection → Web → coller → Enregistrer.
Générer le token
Dans Dolibarr → service OAuth → onglet Jeton d’accèsGénérer le jeton.
Une fenêtre Microsoft s’ouvre : se connecter avec le compte qui enverra les mails. Accepter les permissions.
💡 Utiliser une fenêtre de navigation privée pour éviter les confusions de session.
Vérifier le token
Vérifier que le champ refreshToken n’est pas à null.
⚠ Si refreshToken = null, offline_access est absent des scopes. Sans refresh token, les mails fonctionnent 1 heure puis tombent en panne silencieusement.

Phase 3b — Configurer OAuth par utilisateur (mode MultiSMTP)

Variante à suivre si vous avez choisi une boîte par utilisateur. Le module MultiSMTP doit être installé et activé.

Activer les modules OAuth et MultiSMTP
Configuration → Modules → activer OAuth et MultiSMTP.
Créer un service OAuth par boîte mail
Configuration → OAuth → créer un service pour chaque boîte avec un suffixe unique :
# Pour jean.dupont@monentreprise.fr :
Nom du service = MICROSOFT-jdupont

# Pour marie.martin@monentreprise.fr :
Nom du service = MICROSOFT-mmartin
Client ID, Secret et Tenant sont identiques d’un service à l’autre. Seul le suffixe diffère.
Associer chaque service à son utilisateur
Utilisateurs & Groupes → fiche utilisateur → onglet MultiSMTP → Modifier
Méthode d'authentification = XOAUTH2
Identifiant SMTP           = jean.dupont@monentreprise.fr
Jeton OAuth à utiliser     = MICROSOFT-jdupont
Laisser serveur, port et TLS vides (les valeurs globales seront utilisées).
Consentement OAuth — par l’utilisateur lui-même
L’utilisateur se connecte à Dolibarr avec son propre compte, ouvre sa fiche → onglet MultiSMTP → clique sur « Obtenir un nouveau jeton » → s’authentifie avec sa propre adresse Microsoft.
⚠ L’administrateur ne doit pas faire le consentement à la place de l’utilisateur — le token serait alors émis sur la boîte de l’admin. Chaque utilisateur doit cliquer depuis sa propre session Dolibarr.

Phase 4 — Paramétrer l’envoi d’e-mails et tester

Ouvrir la configuration des e-mails
Accueil → Configuration → E-mails → Modifier
Saisir les paramètres SMTP
ParamètreValeur
Méthode d’envoiSMTP/SMTPS socket library (PHPMailer)
Hôte SMTPsmtp.office365.com
Port587
ChiffrementSTARTTLS
Identifiant SMTPAdresse e-mail complète de l’expéditeur
AuthentificationOAuth2 / XOAUTH2
Service OAuthLe service créé en phase 3
Expéditeur (From)Même adresse que l’identifiant SMTP
⚠ Les 3 adresses doivent être identiques : From = Identifiant SMTP = compte du consentement OAuth. Sinon : erreur 5.7.60 — Client does not have permissions to send as this sender.
Enregistrer et tester
Cliquer sur Enregistrer, puis utiliser la section Tester la disponibilité du serveur en bas de page pour envoyer un mail de test.
Vérifier également la réception côté destinataire — un test peut indiquer succès mais le message arriver en spam.
✓ Configuration complète Si le test passe, tous les e-mails depuis Dolibarr partiront via OAuth2. Aucun mot de passe stocké, renouvellement automatique du token (90 jours glissants).

Dépannage — Erreurs les plus fréquentes

Code d’erreurLocalisationCauseSolution
refreshToken = null Azure — scope manquant Le scope offline_access est absent L’ajouter côté Azure ET dans les Étendues Dolibarr, puis re-générer le token
535 5.7.139 M365 — SMTP désactivé Case « SMTP authentifié » non cochée Phase 2 : activer SMTP authentifié sur la boîte et vérifier la politique tenant
5.7.60 Dolibarr — From ≠ login Adresse From ≠ identifiant SMTP ≠ compte du consentement Aligner les 3 adresses. Pour boîte partagée : accorder Send As dans Exchange
AADSTS65001 Azure — consentement manquant Consentement administrateur non accordé Azure → Autorisations API → cliquer sur Accorder un consentement d’administrateur
AADSTS7000215 Azure — secret invalide Secret expiré ou mal copié Générer un nouveau secret dans Azure, recopier la Valeur immédiatement, mettre à jour Dolibarr
AADSTS70008 Microsoft — token expiré Mot de passe changé, session révoquée, ou 90 jours sans envoi Service OAuth Dolibarr → Générer le jeton → refaire le consentement
invalid_scope Azure — scope absent Permission non autorisée ou mal orthographiée Vérifier que les scopes sont sur Exchange Online (pas Graph). Orthographe exacte : offline_access https://outlook.office365.com/SMTP.Send
Connection timeout Réseau — port 587 bloqué Port 587 sortant bloqué par le pare-feu Ouvrir le port 587 sortant. Tester : openssl s_client -connect smtp.office365.com:587 -starttls smtp

FAQ — Questions fréquentes

Une seule App Registration suffit-elle pour plusieurs utilisateurs ?
Oui. Même pour 100 utilisateurs en MultiSMTP, une seule App Registration Azure suffit. Chacun se rattache via son propre consentement (son propre token dans la base Dolibarr). Les valeurs Client ID, Secret et Tenant sont partagées — c’est le suffixe du service Dolibarr qui crée la distinction.
Pourquoi le scope Microsoft Graph ne fonctionne pas pour SMTP ?
Bien que Microsoft Graph propose une API Mail.Send, elle utilise une route HTTP REST différente de SMTP. Pour l’envoi SMTP via XOAUTH2, le token doit être émis pour le resource outlook.office365.com avec le scope SMTP.Send côté Office 365 Exchange Online. Un token Graph valide sera refusé par le serveur SMTP avec une erreur 535.
Le secret client expire-t-il ?
Oui. Microsoft impose une durée maximale de 24 mois. À noter au calendrier IT pour renouveler avant expiration — sinon plus aucun e-mail ne sort. Lors du renouvellement, le nouveau secret remplace l’ancien dans Dolibarr ; les tokens existants des utilisateurs restent valides tant que leur refresh fonctionne.
Que se passe-t-il quand un utilisateur change de mot de passe Microsoft ?
Le refresh token est invalidé automatiquement (politique Microsoft). L’utilisateur devra refaire le consentement OAuth sur sa fiche (bouton « Obtenir un nouveau jeton »). Aucune action côté admin Dolibarr nécessaire.
Compatibilité avec les boîtes partagées ?
Possible, mais demande une configuration spécifique. Le consentement doit être fait par un utilisateur qui a la permission Send As sur la boîte partagée. L’identifiant SMTP utilise alors l’adresse de la boîte partagée, pas celle de l’utilisateur.
Combien de temps prend une configuration complète ?
Première configuration : compter 30 à 45 minutes (les phases 1 et 2 prennent le plus de temps si Azure n’est pas familier). Mises en service suivantes en MultiSMTP : 5 à 10 minutes par utilisateur.