2016-09-19 29 views
1

MimeKitとMailKitを使用して受信トレイから電子メールを取得しようとしています。
しかし、メールサーバーImapへのログオンは機能しません。
私はポート993をSSLで使用しています。
私はポート143で/ LOGIN/FETCHをTelnetで接続しようとしました。
ポート993の/ LOGIN/FETCHをOpensslと接続しようとしましたが、それは動作します。
Mailkitのv.1.4.2.1Mailkit Imapへの認証に失敗しました

KODE:

 using (var client = new ImapClient(new ProtocolLogger("imap.log"))) 
     { 
      try 
      { 
       client.Connect(server, this.port, true); 
       client.AuthenticationMechanisms.Remove("XOAUTH2");      
       client.Authenticate(user, password); 
       var inbox = client.Inbox; 
       inbox.Open(FolderAccess.ReadWrite); 

       if (inbox.Count > 0) 
       { 
        var range = Enumerable.Range(0, inbox.Count).ToArray(); 
        inbox.AddFlags(range, MessageFlags.Deleted, false); 
        inbox.Expunge(); 
       } 
       client.Disconnect(true); 
      } 
      catch (AuthenticationException e) 
      { 
       throw e; 
      } 
     } 

がIMAP.LOG:

Connected to imaps://xxxx.xxx.xx:993/ 
    S: * OK The Microsoft Exchange IMAP4 service is ready.   
    C: A00000000 CAPABILITY 
    S: * CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN AUTH=NTLM AUTH=GSSAPI UIDPLUS MOVE ID CHILDREN IDLE NAMESPACE LITERAL+ 
    S: A00000000 OK CAPABILITY completed. 
    C: A00000001 AUTHENTICATE NTLM 
    S: + 
    C: TlRMTVNTUAABAAAABwIIAAAAAAAgAAAAAAAAACAAAAA= 
    S: + 
    TlRMTVNTUAACAAAABgAGADgAAAAFAokCETTDB74D2YsAAAAAAAAAAKIAogA+AAAABgLwIwAAAA9LAE0ARAACAAYASwBNAEQAAQAUAEsATQBEAEUAWABDADIAMAAwADYABAAaAGkAbgB0AGUAcgBuAC4AawBtAGQALgBkAGsAAwAwAEsATQBEAEUAWABDADIAMAAwADYALgBpAG4AdABlAHIAbgAuAGsAbQBkAC4AZABrAAUAGgBpAG4AdABlAHIAbgAuAGsAbQBkAC4AZABrAAcACAA8TRLTaRLSAQAAAAA= 
    C: TlRMTVNTUAADAAAAGAAYAFYAAAAYABgAbgAAAAAAAABIAAAADgAOAEgAAAAAAAAAVgAAAAAAAACGAAAAAYIIAgoAWikAAAAPaQBvAG0AdABlAHMAdAA6stwc8LXYfAAAAAAAAAAAAAAAAAAAAAC5L0RCGGq9hCGwriyfURwGscjNCDTBeSA= 
    S: A00000001 NO AUTHENTICATE failed. 
    C: A00000002 AUTHENTICATE PLAIN 
    S: + 
    C: XXXXXXXXXX 
    S: A00000002 NO AUTHENTICATE failed. 
    C: A00000003 LOGIN xxxxxxxxx xxxxxxxx 
    S: A00000003 NO Server Unavailable. 15 
    S: * BYE Connection closed. 14A 

例外:

AuthenticationException: “Authentication failed.” 
    at MailKit.Net.Imap.ImapClient.Authenticate(Encoding encoding, ICredentials credentials, CancellationToken cancellationToken) 
     at MailKit.MailService.Authenticate(String userName, String password, CancellationToken cancellationToken) 
+0

client.AuthenticationMechanisms.Remove ("NTLM"); 

結果のコードは次のようになります。 GitHubソースからMailKitをビルドし、アプリケーションで結果として得られるdllをテストすることで修正されていますか?今週末にこの問題を解決するためにナゲットをリリースしたいと思いますが、「NTLMは修正されました」と言いたくありません。 – jstedfast

答えて

1

/bugAUTHENTICATE NTLMで認証されていました最初の認証メックであるMailKitがあなたのケースで試したハニズム。残念ながら、 NTLM認証が失敗したときにMailKitが自動的に拒否することを拒否するように見えるという点でExchangeのバグ(?)があります。回避策として

、これを行うことにより、MailKitにNTLM認証を無効にする:あなたは最高それのためにしている場合、あなたはこのことを確認することができ

using (var client = new ImapClient(new ProtocolLogger("imap.log"))) 
{ 
    try 
    { 
     client.Connect(server, this.port, true); 
     client.AuthenticationMechanisms.Remove("XOAUTH2"); 
     client.AuthenticationMechanisms.Remove("NTLM"); 
     client.Authenticate(user, password); 
     var inbox = client.Inbox; 
     inbox.Open(FolderAccess.ReadWrite); 

     if (inbox.Count > 0) 
     { 
      var range = Enumerable.Range(0, inbox.Count).ToArray(); 
      inbox.AddFlags(range, MessageFlags.Deleted, false); 
      inbox.Expunge(); 
     } 
     client.Disconnect(true); 
    } 
    catch (AuthenticationException e) 
    { 
     throw e; 
    } 
} 
+0

こんにちは、数日離れていましたが、コードを変更しました。... ありがとうございました... – OleFolkersen

+0

私はMailKit 1.8.1をリリースしました。 NTLMの修正。 NTLM認証が修正されているかどうか確認できますか? – jstedfast

関連する問題