Nous envisageons de passer à O365; cependant, nous avons développé un logiciel qui utilise notre serveur Exchange actuel pour envoyer des e-mails à des utilisateurs externes ainsi qu'à une boîte d'assistance en cas d'erreur.
J'ai testé cela pour m'assurer que le code que nous avons en place continuera de fonctionner avec O365 mais jusqu'à présent, je n'ai pas eu beaucoup de succès.
J'ai essayé d'utiliser SmtpClient de .Net ainsi que SmtpClient de MailKit et aucun ne semble fonctionner. Je continue à recevoir des erreurs (c'est l'erreur de MailKit - l'erreur .Net est similaire)
"AuthenticationInvalidCredentials: 5.7.3 Authentication infructueuse [* .prod.exchangelabs.com]" "
Je peux utiliser les informations d'identification que j'ai dans mon code pour me connecter à OWA - je sais donc que les informations d'identification sont valides. N'est-il pas possible d'envoyer des e-mails via O356? Y a-t-il une configuration spéciale qui doit se produire dans Exchange pour rendre cela possible?
Voici ce que j'ai essayé jusqu'à présent:
MailKit
var msg = new MimeMessage();
msg.From.Add(new MailboxAddress("Support","[email protected]"));
msg.To.Add(new MailboxAddress("Me","[email protected]"));
msg.To.Add(new MailboxAddress("External User","[email protected]"));
msg.Subject = "Test";
msg.Body = new TextPart("plain"){
Text = "Here is a message for you"
};
using(var client = new SmtpClient()){
client.ServerCertificateValidationCallback = (s,c,h,e) => true;
client.AuthenticationMechanisms.Remove("XOAUTH2"); //Not sure what this does. Have tried with and without
client.Connect("smtp.office365.com", 587, MailKit.Security.SecureSocketOptions.StartTls);
client.Authenticate(new NetworkCredential("[email protected]", "supportPwd"));
client.Send(msg);
client.Disconnect(true);
}
Le code .Net SmtpClient ressemblait beaucoup au code MailKit.
- Existe-t-il un moyen d'envoyer via O365 avec un utilisateur sous licence? (code ci-dessus)
- Existe-t-il des paramètres spéciaux requis dans Exchange ou sur l'utilisateur sous licence pour que cela fonctionne? (Si la réponse à 1 est oui)
- Est-il possible d'envoyer des e-mails via une boîte aux lettres partagée pour laquelle l'utilisateur disposant des informations d'identification dispose des droits Envoyer en tant que?
Mise à jour
Je reçois toujours le même message d'erreur. MFA est activé pour nos utilisateurs de domaine. Cependant, nous avons une politique qui ne nécessite pas d'authentification multifacteur pour les utilisateurs lorsqu'ils se connectent à partir d'un emplacement approuvé (IP de notre organisation). J'ai également répertorié notre IP comme IP de confiance. Dans mon esprit, le MAE ne devrait pas être le problème ici.
Je sais que les informations d'identification sont correctes. Je les ai copiés à partir du code et les ai collés dans l'écran de connexion lors de la connexion à M365 - et je suis bien entré.
Qu'est-ce que je fais mal?
Pour tous ceux qui ont des problèmes similaires, j'ai trouvé que mon problème était une politique d'accès conditionnel. Microsoft fournit un
Baseline Policy: Block Legacy Authentication
- qui avait été activé dans notre AAD.En examinant la politique, elle est conçue pour BLOQUER tous les mécanismes d'authentification qui ne nécessitent pas d'authentification multifacteur. Cela inclut des choses comme POP et SMTP. Une fois que j'ai désactivé cette stratégie, le code ci-dessus a très bien fonctionné.
la source