2

SMTP経由で交換サーバーを介して電子メールを送信しようとしMailKitていますが、接続しようとすると次のエラーが発生します。

タイプ 'System.Security.Authentication.AuthenticationException' の例外が MailKit.dll で発生しましたが、ユーザー コードで処理されませんでした

追加情報: 検証手順によると、リモート証明書は無効です。

これを Google で検索すると、Gmail に関する多くの情報や、他のエラー メッセージ (FTP や Web API リクエストなど) の一部として表示されます。IT 担当者と話しましたが、これは自己署名証明書ではなく、認証は必要ありません (実際、私が管理する BugZilla インスタンスは同じ設定でセットアップされ、正常に動作します)。何が間違っているのか、またはトラブルシューティングを進めるために詳細を入手するにはどうすればよいですか?

using (var Client = new SmtpClient())
{
    Client.Connect("mail.address.com", 587, false);
    Client.AuthenticationMechanisms.Remove("XOAUTH2");
    Client.Send(Message);
    Client.Disconnect(true);
}

編集:私は、IIS で使用されているのと同じ証明書であることを IT に確認しましたmail.address.com domain。また、信頼できるルートとしてインストールしましたが、それでも同じエラーが発生します。

編集2:コードを更新するとClient.Connect("mail.address.com", 587, true);、エラーが発生します:

>System.Private.Networking.dll で「System.IO.IOException」タイプの例外が発生しましたが、ユーザー コードでは処理されませんでした

追加情報: 予期しないパケット形式のため、ハンドシェイクが失敗しました。

4

2 に答える 2

2

Gmail で MailKitを使用しようとしたときにまったく同じエラーが発生し、デフォルトでアバスト アンチウイルスのメール シールドで「SSL 接続のスキャン」が有効になっていることがわかりました。必ずオフにしてください。

私の知る限り、アバストはメールを「開き」、ウイルスをスキャンしてから、独自の証明書を使用して署名するため、メールは gmail の証明書によって署名されなくなり、エラーが発生します。

タイプ 'System.Security.Authentication.AuthenticationException' の例外が MailKit.dll で発生しましたが、ユーザー コードでは処理されませんでした。

追加情報: 検証手順によると、リモート証明書は無効です。

解決策 1:

  • ウイルス対策 (またはメール シールド全体) から SSL スキャンをオフにします。

解決策 2 (最高のセキュリティの話であるべきです):

  • アンチウイルスが使用する証明書を取得します (Avast にはエクスポートするオプションがあります)。
  • gmail サーバーに接続する前に、imap/pop/smtp クライアントにインポートします。
于 2016-02-27T22:26:52.227 に答える