O365への移行を検討しています。ただし、現在のExchangeサーバーを使用して、エラーが発生したときに外部ユーザーとサポートボックスの両方に電子メールを送信するソフトウェアを開発しました。
これをテストして、配置したコードがO365で引き続き機能することを確認しましたが、これまでのところ、あまり成功していません。
.NetのSmtpClientとMailKitのSmtpClientを使用してみましたが、どちらも機能しないようです。エラーが発生し続けます(これはMailKitからのエラーです。.Netエラーも同様です)。
「AuthenticationInvalidCredentials:5.7.3認証失敗[* .prod.exchangelabs.com]」
コードにある資格情報を使用してOWAにログインできます。資格情報が有効であることはわかっています。O356経由でメールを送ることはできませんか?これを可能にするためにExchangeで実行する必要がある特別な構成はありますか?
これが私がこれまでに試したことです:
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);
}
.Net SmtpClientコードは、MailKitコードと非常によく似ていました。
- ライセンスユーザーとO365を介して送信する方法はありますか?(上記のコード)
- これを機能させるために、Exchangeまたはライセンスされたユーザーに必要な特別な設定はありますか?(1の答えが「はい」の場合)
- 認証されたユーザーが送信者権限を持つ共有メールボックスを介してメールを送信することはできますか?
更新
引き続き同じエラーメッセージが表示されます。ドメインユーザーに対してMFAが有効になっています。ただし、ユーザーが信頼できる場所(組織のIP)からサインインする場合、ユーザーにMFAを必要としないポリシーがあります。また、信頼できるIPとしてIPをリストしました。私の考えでは、MFAはここでは問題になりません。
資格情報が正しいことを知っています。私はそれらをコードからコピーし、M365にサインインするときにログイン画面に貼り付けました-そして私はうまくいきました。
何が悪いのですか?