如何使用AE.Net.Mail获取邮箱列表
本文关键字:列表 获取 Mail 何使用 AE Net | 更新日期: 2023-09-27 18:23:54
我正在尝试使用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
}
我发现这是可行的:
var listMailboxes = imap.ListMailboxes(string.Empty, "*");
foreach (var listMailbox in listMailboxes)
{
var mailbox = listMailbox.Name;
}
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的第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
参数的内容:
注:参考论点的解释如下实现定义。这取决于服务器实现具有";现在的工作目录";并引导";中断字符";,其覆盖当前工作目录。
因此,这些示例可能起作用,也可能不起作用,这取决于您的服务器实现。