我正在尝试使用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
}
答案 0 :(得分:5)
我发现这个有用:
var listMailboxes = imap.ListMailboxes(string.Empty, "*");
foreach (var listMailbox in listMailboxes)
{
var mailbox = listMailbox.Name;
}
答案 1 :(得分:3)
AE.Net.Mail中的ImapClient.ListMailboxes
方法是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();
}
IMAP RFC的 Section 6.3.8包含一些示例,说明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
参数说了以下内容:
注意:引用参数的解释是 实现定义。这取决于是否 服务器实现有一个“当前的概念 工作目录“和领导”突破字符“, 它会覆盖当前的工作目录。
因此,根据您的服务器实现,示例可能有效,也可能无效。