Stiamo pensando di passare a O365; tuttavia, abbiamo sviluppato un software che utilizza il nostro attuale server Exchange per inviare e-mail sia a utenti esterni che a una casella di supporto quando si verificano errori.
Ho provato questo per assicurarsi che il codice che abbiamo in atto continuerà a funzionare con O365 ma finora non ho avuto molto successo.
Ho provato a utilizzare SmtpClient di .Net e SmtpClient di MailKit e nessuno dei due sembra funzionare. Continuo a ricevere errori (questo è l'errore di MailKit - l'errore .Net è simile)
"AuthenticationInvalidCredentials: 5.7.3 Autenticazione fallita [* .prod.exchangelabs.com]"
Posso usare le credenziali che ho nel mio codice per accedere a OWA, quindi so che le credenziali sono valide. Non è possibile inviare e-mail tramite O356? Esiste una configurazione speciale che deve avvenire in Exchange per renderlo possibile?
Ecco cosa ho provato finora:
MailKit
var msg = new MimeMessage();
msg.From.Add(new MailboxAddress("Support","support@mydomain.com"));
msg.To.Add(new MailboxAddress("Me","me@mydomain.com"));
msg.To.Add(new MailboxAddress("External User","euser@externaldomain.com"));
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("support@mydomain.com", "supportPwd"));
client.Send(msg);
client.Disconnect(true);
}
Il codice .Net SmtpClient sembrava molto simile al codice MailKit.
- C'è un modo per inviare tramite O365 con un utente con licenza? (codice sopra)
- Ci sono delle impostazioni speciali richieste in Exchange o sull'utente con licenza per farlo funzionare? (Se la risposta a 1 è sì)
- È possibile inviare e-mail tramite una cassetta postale condivisa per la quale l'utente con credenziali dispone dei diritti Invia come?
Aggiornare
Ricevo ancora lo stesso messaggio di errore. MFA è abilitato per i nostri utenti del dominio. Tuttavia, abbiamo una politica che non richiede MFA per gli utenti quando accedono da una posizione attendibile (IP della nostra organizzazione). Ho anche elencato il nostro IP come un IP affidabile. Nella mia mente, l'AMF non dovrebbe essere il problema qui.
So che le credenziali sono corrette. Li ho copiati dal codice e li ho incollati nella schermata di accesso quando si accede a M365 - e sono entrato bene.
Che cosa sto facendo di sbagliato?