2017-04-26 4 views
0

나는 C#에서 내 자신의 Imap 라이브러리를 만들려고하고 있으며 지금까지 내가 시도한 모든 것을 (연결, 로그인, 목록, 선택, 가져 오기 등) 할 수있었습니다.IMAP 다중 단어 사서함 선택

그러나 이름에 여러 단어가 포함 된 사서함을 선택하는 데 문제가 있습니다.

예를 들어 "새 레이블"이라는 사서함 이름은 선택할 수 없지만 "받은 편지함"은 성공적으로 선택됩니다.

0002 LIST "" "%" 
* LIST (\HasNoChildren) "/" "INBOX" 
* LIST (\HasNoChildren) "/" "New" 
* LIST (\HasNoChildren) "/" "New Label" 
* LIST (\HasChildren \Noselect) "/" "[Gmail]" 
0002 OK Success 

0003 SELECT INBOX 
0003 OK [READ-WRITE] INBOX selected. (Success) 

0004 SELECT New Label 
0004 BAD Could not parse command 

IMAP는 사양 (RFC 3501 5.1 사서함 이름 지정)이이 치료 방법을 참조하지 않습니다. 그것은 5.1.3이라는 이름의 국제적 언급을 언급하고 있지만, US-ASCII 인쇄 가능한 문자는 그 자체를 나타냅니다.

this question에 대한 대답은 사서함 이름을 공백과 함께 보내야한다는 것을 보여 줬지만 내 경우에는 분명히 작동하지 않습니다.

public ResponseStatusEnum sendCommandReceiveResponse(out List<String> responseArray, string command, params string[] cmdParams) 
    { 
     ResponseStatusEnum response; 
     if (command == null) throw new Exception("No command passed in to send to the server"); 
     // Increment the id before getting the id string 
     m_nCommandId++; 
     StringBuilder sbCommand = new StringBuilder(CommandId + " "); 

     // Include the Imap command 
     sbCommand.Append(command); 

     //Include the parameters specific to the command 
     for (int i = 0; i < cmdParams.Length; i++) 
     { 
      sbCommand.Append(" " + cmdParams[i]); 
     } 
     sbCommand.Append(ImapEol); 

답변

1

은 RFC 3501가을 지정 않으며, 87 페이지 지정의 첫 번째 줄 :

내가 (내가 지금까지 시도 모든 명령과 함께 잘 작동) 명령을 만드는 데 사용하고있는 코드입니다 그 astring 구문을 사용하는 것입니다. Astring가 IMAP에서 많은 것들을 사용하고,이 경우는 그냥되는 :

0004 SELECT "New label" 

음주 구문에 astring/문자열 /을 STRING/문자 그대로의 작품을 읽고, 당신은 그 권리 분석하기 위해 가야 또는 전 세계 무대에서 IMAP을 생성 할 수 있습니다. 아니면 아웃소싱하고 싶다면 라이브러리를 사용하십시오. C#에는 훌륭한 라이브러리가 있습니다.

+0

감사합니다. 질문을하기 전에 구문 섹션을 읽어 보겠습니다. 나는 아주 기본적인 일을하고있다. (그리고 나는 IMAP에 익숙해 져야한다.) 그래서 나는 도서관에 가지 않기로 결정했다. – havan

+0

나는 당신이 그런 일을하고있을 거라고 생각했다. Mailkit의 소스 코드도 흥미로울 것입니다. C#이며 잘 쓰여졌습니다. – arnt

+0

Fwiw, MailKit의 소스 코드는 https://github.com/jstedfast/MailKit에서 찾을 수 있습니다. – jstedfast