Как получить список почтовых ящиков, используя AE.Net.Mail? - PullRequest
2 голосов
/ 08 февраля 2012

Я пытаюсь получить список почтовых ящиков, используя AE.Net.Mail, и я не могу найти какую-либо документацию.Метод ListMailboxes принимает строку ссылки и строку шаблона.Я не уверен, какой из этих параметров должен быть.

using (var imap = new AE.Net.Mail.ImapClient(host, username, password, AE.Net.Mail.ImapClient.AuthMethods.Login, port, isSSL))
{
    List<Mailbox> boxes = imap.ListMailboxes("", ""); // string reference, string parameter
}

Ответы [ 2 ]

5 голосов
/ 30 октября 2013

Я нашел это на работу:

var listMailboxes = imap.ListMailboxes(string.Empty, "*");

foreach (var listMailbox in listMailboxes)
{
    var mailbox = listMailbox.Name;                    
}
3 голосов
/ 08 февраля 2012

Метод ImapClient.ListMailboxes из AE.Net.Mail является довольно тонкой оболочкой для команды IMAP LIST.

public Mailbox[] ListMailboxes(string reference, string pattern) 
{
    IdlePause();

    var x = new List<Mailbox>();
    string command = GetTag() + "LIST " + reference.QuoteString() + " " + pattern.QuoteString();
    string reg = "\\* LIST \\(([^\\)]*)\\) \\\"([^\\\"]+)\\\" \\\"?([^\\\"]+)\\\"?";
    string response = SendCommandGetResponse(command);
    Match m = Regex.Match(response, reg);
    while (m.Groups.Count > 1) 
    {
        Mailbox mailbox = new Mailbox(m.Groups[3].ToString());
        x.Add(mailbox);
        response = GetResponse();
        m = Regex.Match(response, reg);
    }
    IdleResume();
    return x.ToArray();
}

Раздел 6.3.8 IMAP RFCсодержит некоторые примеры того, как эти параметры обычно интерпретируются сервером IMAP («Имя почтового ящика» является параметром pattern):

Reference     Mailbox Name  Interpretation
------------  ------------  --------------
~smith/Mail/  foo.*         ~smith/Mail/foo.*
archive/      %             archive/%
#news.        comp.mail.*   #news.comp.mail.*
~smith/Mail/  /usr/doc/foo  /usr/doc/foo
archive/      ~fred/Mail/*  ~fred/Mail/*

Хотя в нем также говорится следующее о параметре Reference:

Примечание. Интерпретация ссылочного аргумента определяется реализацией.Это зависит от того, имеет ли реализация сервера концепцию «текущего рабочего каталога» и ведущих «символов пробоя», которые переопределяют текущий рабочий каталог.

Так что примеры могут работать или не работать в зависимости отна вашем сервере реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...