Kami berpikir tentang pindah ke O365; namun, kami mengembangkan perangkat lunak yang menggunakan server Exchange kami saat ini untuk mengirim email baik kepada pengguna eksternal maupun ke kotak dukungan ketika kesalahan terjadi.
Saya telah menguji ini untuk memastikan bahwa kode yang kami miliki akan terus bekerja dengan O365 tetapi sejauh ini, saya belum terlalu berhasil.
Saya telah mencoba menggunakan SmtpClient .Net serta SmtpClient dari MailKit dan tampaknya tidak ada yang berhasil. Saya terus mendapatkan kesalahan (ini adalah kesalahan dari MailKit - kesalahan .Net serupa)
"AuthenticationInvalidCredentials: 5.7.3 Otentikasi tidak berhasil [* .prod.exchangelabs.com]"
Saya dapat menggunakan kredensial yang saya miliki dalam kode saya untuk masuk ke OWA - jadi saya tahu kredensial itu valid. Apakah tidak mungkin mengirim email melalui O356? Apakah ada konfigurasi khusus yang harus terjadi di Exchange untuk memungkinkan ini?
Inilah yang saya coba sejauh ini:
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);
}
Kode .Net SmtpClient tampak sangat mirip dengan kode MailKit.
- Apakah ada cara untuk mengirim melalui O365 dengan pengguna berlisensi? (kode di atas)
- Apakah ada pengaturan khusus yang diperlukan di Exchange atau pada pengguna berlisensi untuk membuat ini berfungsi? (Jika jawaban 1 adalah ya)
- Apakah mungkin untuk mengirim email melalui kotak surat bersama yang pengguna kredensial memiliki hak Kirim Sebagai?
Memperbarui
Saya masih mendapatkan pesan kesalahan yang sama. Kami memang mengaktifkan MFA untuk pengguna domain kami. Namun, kami memiliki kebijakan yang tidak mengharuskan MFA untuk pengguna saat mereka masuk dari lokasi tepercaya (IP org kami). Saya juga mendaftarkan IP kami sebagai IP Tepercaya. Menurut saya, MFA seharusnya tidak menjadi masalah di sini.
Saya tahu kredensial sudah benar. Saya menyalinnya dari kode dan menempelkannya ke layar masuk saat masuk ke M365 - dan saya mendapatkannya dengan baik.
Apa yang saya lakukan salah?
Bagi siapa pun yang memiliki masalah serupa, saya menemukan bahwa masalah saya adalah Kebijakan Akses Bersyarat. Microsoft menyediakan
Baseline Policy: Block Legacy Authentication
- yang telah dihidupkan dalam AAD kami.Dalam melihat Kebijakan, kebijakan ini dirancang untuk MEMBLOKIR mekanisme otentikasi apa pun yang tidak memerlukan MFA. Ini termasuk hal-hal seperti POP dan SMTP. Setelah saya menonaktifkan kebijakan ini, kode yang tercantum di atas berfungsi dengan baik.
sumber