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.
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.
Inscrire l’application, récupérer Client ID + Secret + Tenant ID, configurer les permissions API.
Activer SMTP authentifié sur la boîte cible. Obligatoire même avec OAuth2.
Activer le module OAuth, créer le service Microsoft Exchange Online, générer le token.
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.
Nom = Dolibarr OAuth Types de comptes = Comptes dans cet annuaire uniquement URI de redirection = Web — laisser vide pour l'instantValider. La page Vue d’ensemble s’affiche.
ID d'application (client) → Client ID ID de l'annuaire (locataire) → Tenant ID
SMTP.Send # envoi SMTP IMAP.AccessAsUser.All # réception IMAP (optionnel) User.Read # identification du compte offline_access # refresh_token automatique — indispensablePuis cliquer sur « Accorder un consentement d’administrateur pour [organisation] » et confirmer. Chaque permission doit passer au vert.
Phase 2 — Activer SMTP authentifié sur la boîte Microsoft 365
Utilisateurs → Utilisateurs actifs → sélectionner le compte expéditeur.
Onglet Courrier → Gérer les applications de courrier → cocher SMTP authentifié → Enregistrer.
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.
Accueil → Configuration → Modules → rechercher OAuth → activer.
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
Dolibarr affiche une URL de redirection. La copier, puis dans Azure : Authentification → + Ajouter un URI de redirection → Web → coller → Enregistrer.
Dans Dolibarr → service OAuth → onglet Jeton d’accès → Générer le jeton.
Une fenêtre Microsoft s’ouvre : se connecter avec le compte qui enverra les mails. Accepter les permissions.
Vérifier que le champ
refreshToken n’est pas à 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é.
Configuration → Modules → activer OAuth et MultiSMTP.
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-mmartinClient ID, Secret et Tenant sont identiques d’un service à l’autre. Seul le suffixe diffère.
Utilisateurs & Groupes → fiche utilisateur → onglet MultiSMTP → Modifier
Méthode d'authentification = XOAUTH2 Identifiant SMTP = jean.dupont@monentreprise.fr Jeton OAuth à utiliser = MICROSOFT-jdupontLaisser serveur, port et TLS vides (les valeurs globales seront utilisées).
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.
Phase 4 — Paramétrer l’envoi d’e-mails et tester
Accueil → Configuration → E-mails → Modifier
| Paramètre | Valeur |
|---|---|
| Méthode d’envoi | SMTP/SMTPS socket library (PHPMailer) |
| Hôte SMTP | smtp.office365.com |
| Port | 587 |
| Chiffrement | STARTTLS |
| Identifiant SMTP | Adresse e-mail complète de l’expéditeur |
| Authentification | OAuth2 / XOAUTH2 |
| Service OAuth | Le service créé en phase 3 |
| Expéditeur (From) | Même adresse que l’identifiant SMTP |
5.7.60 — Client does not have permissions to send as this sender.
Cliquer sur Enregistrer, puis utiliser la section Tester la disponibilité du serveur en bas de page pour envoyer un mail de test.
Dépannage — Erreurs les plus fréquentes
| Code d’erreur | Localisation | Cause | Solution |
|---|---|---|---|
| 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 ?
Pourquoi le scope Microsoft Graph ne fonctionne pas pour SMTP ?
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.