私は自分のImapライブラリをC#で作成しようとしていますが、これまでに試したすべてのこと(接続、ログイン、リスト、選択、フェッチなど)ができました。IMAPマルチワードメールボックスの選択
しかし、名前に複数の単語を含むメールボックスを選択する際に問題があります。
たとえば、メールボックス名 "New Label"は選択できませんが、 "INBOX"は正常に選択されています。
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);
ご質問ありがとうございます。ありがとうございます。ありがとうございます。ありがとうございます。私は非常に基本的なことをしています(IMAPに慣れたい)ので、私は図書館に行かないことにしました。 – havan
私はあなたがそういうことをしていると思っていました。 Mailkitのソースコードも面白いかもしれませんが、それはC#で書かれています。 – arnt
Fwiw、MailKitのソースコードはhttps://github.com/jstedfast/MailKitにあります。 – jstedfast