2012-02-08 16 views
2

AE.Net.Mailを使用してメールボックスのリストを取得しようとしていますが、ドキュメントが見つかりません。 ListMailboxesメソッドは、参照文字列とパターン文字列を取ります。いずれのパラメータがどうあるべきかわかりません。AE.Net.Mailを使用してメールボックスのリストを取得するには?

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 
} 

答えて

3

AE.Net.MailからImapClient.ListMailboxes方法は、IMAP LISTコマンドのかなり薄いラッパーです。 IMAPのRFCの

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(); 
} 

Section 6.3.8(「メールボックス名は」patternパラメータである)これらのパラメータは、一般的にIMAPサーバによってどのように解釈されるかの例をいくつか含まれています

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パラメータに関して:

注:参照引数の解釈は、 実装です。定義される。 サーバーの実装に、 "現在の 作業ディレクトリ"という概念と、 "ブレイクアウト文字"である現行作業ディレクトリをオーバーライドする という概念があるかどうかによって異なります。

したがって、サーバーの実装によっては、例が機能する場合と動作しない場合があります。

5

私はこれが機能することが分かっ:

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

foreach (var listMailbox in listMailboxes) 
{ 
    var mailbox = listMailbox.Name;      
} 
関連する問題