2017-04-19 1 views
0

Je reçois cette erreur lorsque j'utilise la commande de recherche avec caractère spécial dans searchPhrase comme "سلام" cela fonctionne très bien dans autres cas. J'ai également essayé d'encoder en UTF-8. il n'y a pas d'erreur à ce moment-là mais il ne restitue aucun résultat.Le serveur IMAP a répondu à la commande 'SEARCH' avec une réponse 'NO': Jeu de caractères non pris en charge pour la recherche

var uids = Client.Inbox.Search(SearchQuery.SubjectContains(searchPhrase)); 

Une suggestion?

+0

j'ai cette question aussi? Quelle est la solution? –

+0

Le message d'erreur indique ** SERVER ** ne prend pas en charge le jeu de caractères. Cela n'a rien à voir avec votre code. Parlez aux personnes responsables du serveur et demandez-leur quels jeux de caractères il supporte. –

+0

Certains serveurs ont un support d'internationalisation terrible. – Max

Répondre

2

Je viens de tester cela sur GMail en utilisant MailKit et voici ce que je reçois:

S: A00000006 OK [READ-ONLY] INBOX selected. (Success) 
C: A00000007 UID SEARCH RETURN() CHARSET UTF-8 SUBJECT {8+} 
C: سلام 
S: * ESEARCH (TAG "A00000007") UID 
S: A00000007 OK SEARCH completed (Success) 

Quelle est l'erreur? Semble fonctionner correctement pour moi (autre que le fait que je n'ai évidemment aucun message avec cette chaîne dans l'en-tête du sujet).

Voici mon petit programme de test:

using System; 

using MailKit.Net.Imap; 
using MailKit.Search; 
using MailKit; 
using MimeKit; 

namespace GMailSearchTest { 
    class Program 
    { 
     public static void Main (string[] args) 
     { 
      using (var client = new ImapClient (new ProtocolLogger (Console.OpenStandardOutput()))) { 
       // For demo-purposes, accept all SSL certificates 
       client.ServerCertificateValidationCallback = (s,c,h,e) => true; 

       client.Connect ("imap.gmail.com", 993, true); 

       // Note: since we don't have an OAuth2 token, disable 
       // the XOAUTH2 authentication mechanism. 
       client.AuthenticationMechanisms.Remove ("XOAUTH2"); 

       client.Authenticate ("[email protected]", "xxx"); 

       client.Inbox.Open (FolderAccess.ReadOnly); 
       client.Inbox.Search (SearchQuery.SubjectContains ("سلام")); 

       client.Disconnect (true); 
      } 
     } 
    } 
}