SMTPAuthenticationError: (535, b'5.7.3 Authentication unsuccessful [BM1PR01CA0150.INDPRD01.PROD.OUTLOOK.COM]').
3 Réponses :
Très probablement, le SMTP authentifié (protocole SMTP AUTH) est désactivé dans votre organisation Exchange Online.
SMTP AUTH peut être activé / désactivé au niveau de l'organisation ou par boîte aux lettres. Étant donné que SMTP AUTH utilise uniquement l'authentification de base, Microsoft recommande de la désactiver au niveau de l'organisation et de l'activer uniquement pour les comptes individuels qui en ont toujours besoin.
Si les paramètres de sécurité par défaut sont activés dans l'organisation, alors SMTP AUTH est désactivé.
SMTP AUTH peut être activé dans le centre d'administration Microsoft 365 ou à l'aide d'Exchange Online Powershell.
Pour faire simple, pour activer SMTP AUTH pour un seul compte:
Après cela, vous devriez pouvoir vous authentifier en utilisant le compte respectif.
Important : vous avez besoin des droits d'administrateur dans votre organisation Office 365 pour ce faire. Sinon, demandez de l'aide à l'administrateur de votre organisation O365.
Plus de détails: https://docs.microsoft.com/exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission
@wombatonfire a donné une réponse formidable, mais si pour une raison quelconque ces étapes ne sont pas possibles (comme ce fut ma situation), ce qui suit a résolu le problème OP pour moi.
Je suis sur un Mac. Impossible d'accéder au centre d'administration. J'ai dû utiliser PowerShell. En outre, PowerShell sur mon Mac a dû se connecter au serveur d'échange MSFT avant de pouvoir modifier le paramètre de ma boîte aux lettres. Ce qui suit fait que le courrier électronique fonctionne comme prévu.
Il y a un cerceau critique à franchir pour que tout cela fonctionne. Pour connecter votre Mac au serveur MSFT Exchange, votre Mac doit utiliser TLS1.2 depuis / via / via OpenSSL1.0. OpenSSL1.1 est interdit.
Obtenez une fenêtre de terminal sur votre Mac:
>Disconnect-ExchangeOnline
Dans la fenêtre du terminal, vérifiez quelle (s) version (s) d'OpenSSL sont sur votre Mac:
Set-CASMailbox -Identity youremail@yourdomain -SmtpClientAuthenticationDisabled $false
Voir quelle version est active:
COPY the giant link that gets displayed in the powershell window PASTE the giant link into a web browser (I used Safari).
OpenSSL 1.1. * Est incorrect. OpenSSL 1.0. * Est bon.
NORMALEMENT, vous pouvez utiliser brew pour changer de version d'un paquet est actif avec:
>Connect-ExchangeOnline -UserPrincipalName youremail@yourdomain
Mais j'ai eu cette erreur: Avertissement: Refus de lier le logiciel fourni par macOS / shadowed: openssl. J'ai donc dû devenir délicat.
Changez la variable d'environnement PATH (uniquement dans cette session de terminal, pas de façon permanente).
>[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Maintenant, le chèque montre une bonne version:
>Install-Module -Name ExchangeOnlineManagement -AllowPrerelease -Force
Ensuite, j'ai suivi les étapes pour installer PowerShell documentées ici: https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-7
Maintenant, ouvrez PowerShell en tant qu'administrateur.
>Uninstall-Module -Name ExchangeOnlineManagement -RequiredVersion 2.0.3
À l'invite PowerShell, vérifiez votre version PowerShell. La version 7 est nécessaire.
>Install-Module -Name PowerShellGet -Force
J'ai: 7.0.3 Révision -1
Vérifiez quels modules sont installés dans PowerShell:
>Get-Module -ListAvailable
Si «PowerShellGet» n'est pas répertorié, installez-le:
>$host.version
Cette prochaine étape est essentielle au succès sur le Mac. Seule la dernière version «aperçu 2.0.4» du package «ExchangeOnlineManagement» fonctionnera sur Mac.
Je ne sais pas si cela est nécessaire, mais j'ai désinstallé la version publiée du package "ExchangeOnlineManagement" avec:
>sudo su - root <your mac password> root>pwsh
Si la version d'aperçu n'est pas présente, installez-la:
>openssl version -a
Un dernier détail à prendre en compte. Dites à PowerShell quelle version de TLS vous voulez que le package "ExchangeOnlineManagement" utilise:
>PATH=/usr/local/Cellar/openssl/1.0.2s/bin:$PATH
Enfin, il est temps de se connecter au vaisseau mère: (encore une fois, c'est plus compliqué sur un Mac que sous Windows, probablement).
>brew switch openssl 1.0.2s >brew link --overwrite openssl
La commande ci-dessus essaiera d'ouvrir un navigateur sur une page d'authentification spéciale. Au moins sur mon Mac, ça ne pouvait pas. Donc:
>openssl version -a
Après avoir entré vos informations d'identification Exchange sur cette page de navigateur, votre PowerShell affichera une barre de progression pendant une courte période, puis sera connecté comme par magie au serveur MSFT Exchange!
Et la dernière étape pour définir le paramètre SMTP sur la boîte aux lettres que vous souhaitez utiliser:
>ls -al /usr/local/Cellar/openssl*
Enfin, apparemment, il est important de toujours se déconnecter explicitement (avant de fermer la fenêtre du terminal):
Click LaunchPad, type "term", click Terminal
C'est le jeu de balle. Vous modifiez le paramètre «désactivé» sur false pour chaque / toute / toutes les boîtes aux lettres à partir desquelles vous souhaitez envoyer des e-mails.
Maintenant, le code python entièrement documenté et souvent répété vu dans l'OP utilisera SMTP et TLS pour envoyer des e-mails via MSFT Exchange (jusqu'à ce que quelque chose d'autre casse tout à nouveau: -O).
Prendre plaisir!
Merci @wombatonfire - très utile - j'ai un petit ajout à votre réponse.
J'ai essayé pendant quelques heures de configurer plusieurs adresses e-mail pour envoyer du courrier à partir d'un script Python; tous les comptes avec lesquels je travaillais montraient que SMTP authentifié était activé sur la page Utilisateur actif, mais j'obtenais toujours des erreurs d'authentification.
Ce n'est que lorsque j'ai désélectionné et re-sélectionné la case à cocher «SMTP authentifié» pour chaque compte que le script a fonctionné.
Merci
Nous vous remercions de votre contribution. Cela devrait être un commentaire sur le message référencé. Il n'est pas considéré comme une réponse selon les directives SO (qui sont nécessaires pour que cette plate-forme fonctionne bien - cela fonctionne différemment des forums). Une fois que vous avez suffisamment de réputation, vous pouvez commenter n'importe où. Nous apprécions votre disponibilité et votre engagement. Bienvenue à SO. Vous pouvez en savoir plus dans la section d'aide.
Avez-vous parcouru les suggestions ici? stackoverflow.com/questions/34045404/… . Surtout en revérifiant votre mot de passe et votre adresse e-mail.
Comment vérifier si l'adresse e-mail a été créée en tant que boîte aux lettres partagée?