本文整理汇总了C#中MailKit.Net.Imap.ImapEngine.GetCachedFolder方法的典型用法代码示例。如果您正苦于以下问题:C# ImapEngine.GetCachedFolder方法的具体用法?C# ImapEngine.GetCachedFolder怎么用?C# ImapEngine.GetCachedFolder使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MailKit.Net.Imap.ImapEngine
的用法示例。
在下文中一共展示了ImapEngine.GetCachedFolder方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: UntaggedQuota
static void UntaggedQuota (ImapEngine engine, ImapCommand ic, int index)
{
string format = string.Format (ImapEngine.GenericUntaggedResponseSyntaxErrorFormat, "QUOTA", "{0}");
var encodedName = ReadStringToken (engine, format, ic.CancellationToken);
ImapFolder quotaRoot;
FolderQuota quota;
if (!engine.GetCachedFolder (encodedName, out quotaRoot)) {
// Note: this shouldn't happen because the quota root should
// be one of the parent folders which will all have been added
// to the folder cache by this point.
}
ic.UserData = quota = new FolderQuota (quotaRoot);
var token = engine.ReadToken (ic.CancellationToken);
if (token.Type != ImapTokenType.OpenParen)
throw ImapEngine.UnexpectedToken (format, token);
while (token.Type != ImapTokenType.CloseParen) {
uint used, limit;
string resource;
token = engine.ReadToken (ic.CancellationToken);
if (token.Type != ImapTokenType.Atom)
throw ImapEngine.UnexpectedToken (format, token);
resource = (string) token.Value;
token = engine.ReadToken (ic.CancellationToken);
if (token.Type != ImapTokenType.Atom || !uint.TryParse ((string) token.Value, out used))
throw ImapEngine.UnexpectedToken (format, token);
token = engine.ReadToken (ic.CancellationToken);
if (token.Type != ImapTokenType.Atom || !uint.TryParse ((string) token.Value, out limit))
throw ImapEngine.UnexpectedToken (format, token);
switch (resource.ToUpperInvariant ()) {
case "MESSAGE":
quota.CurrentMessageCount = used;
quota.MessageLimit = limit;
break;
case "STORAGE":
quota.CurrentStorageSize = used;
quota.StorageLimit = limit;
break;
}
token = engine.PeekToken (ic.CancellationToken);
}
// read the closing paren
engine.ReadToken (ic.CancellationToken);
}
示例2: UntaggedMetadata
static void UntaggedMetadata (ImapEngine engine, ImapCommand ic, int index)
{
string format = string.Format (ImapEngine.GenericUntaggedResponseSyntaxErrorFormat, "METADATA", "{0}");
var encodedName = ReadStringToken (engine, format, ic.CancellationToken);
var metadata = (MetadataCollection) ic.UserData;
ImapFolder folder;
engine.GetCachedFolder (encodedName, out folder);
var token = engine.ReadToken (ic.CancellationToken);
if (token.Type != ImapTokenType.OpenParen)
throw ImapEngine.UnexpectedToken (format, token);
while (token.Type != ImapTokenType.CloseParen) {
var tag = ReadStringToken (engine, format, ic.CancellationToken);
var value = ReadStringToken (engine, format, ic.CancellationToken);
metadata.Add (new Metadata (MetadataTag.Create (tag), value));
token = engine.PeekToken (ic.CancellationToken);
}
// read the closing paren
engine.ReadToken (ic.CancellationToken);
}
示例3: ParseFolderList
/// <summary>
/// Parses an untagged LIST or LSUB response.
/// </summary>
/// <param name="engine">The IMAP engine.</param>
/// <param name="ic">The IMAP command.</param>
/// <param name="index">The index.</param>
public static void ParseFolderList (ImapEngine engine, ImapCommand ic, int index)
{
var token = engine.ReadToken (ic.CancellationToken);
var list = (List<ImapFolder>) ic.UserData;
var attrs = FolderAttributes.None;
string encodedName;
ImapFolder folder;
char delim;
// parse the folder attributes list
if (token.Type != ImapTokenType.OpenParen)
throw ImapEngine.UnexpectedToken (token, false);
token = engine.ReadToken (ic.CancellationToken);
while (token.Type == ImapTokenType.Flag || token.Type == ImapTokenType.Atom) {
string atom = (string) token.Value;
switch (atom) {
case "\\NoInferiors": attrs |= FolderAttributes.NoInferiors; break;
case "\\Noselect": attrs |= FolderAttributes.NoSelect; break;
case "\\Marked": attrs |= FolderAttributes.Marked; break;
case "\\Unmarked": attrs |= FolderAttributes.Unmarked; break;
case "\\NonExistent": attrs |= FolderAttributes.NonExistent; break;
case "\\Subscribed": attrs |= FolderAttributes.Subscribed; break;
case "\\Remote": attrs |= FolderAttributes.Remote; break;
case "\\HasChildren": attrs |= FolderAttributes.HasChildren; break;
case "\\HasNoChildren": attrs |= FolderAttributes.HasNoChildren; break;
case "\\All": attrs |= FolderAttributes.All; break;
case "\\Archive": attrs |= FolderAttributes.Archive; break;
case "\\Drafts": attrs |= FolderAttributes.Drafts; break;
case "\\Flagged": attrs |= FolderAttributes.Flagged; break;
case "\\Junk": attrs |= FolderAttributes.Junk; break;
case "\\Sent": attrs |= FolderAttributes.Sent; break;
case "\\Trash": attrs |= FolderAttributes.Trash; break;
// XLIST flags:
case "\\AllMail": attrs |= FolderAttributes.All; break;
case "\\Important": attrs |= FolderAttributes.Flagged; break;
case "\\Inbox": attrs |= FolderAttributes.Inbox; break;
case "\\Spam": attrs |= FolderAttributes.Junk; break;
case "\\Starred": attrs |= FolderAttributes.Flagged; break;
}
token = engine.ReadToken (ic.CancellationToken);
}
if (token.Type != ImapTokenType.CloseParen)
throw ImapEngine.UnexpectedToken (token, false);
// parse the path delimeter
token = engine.ReadToken (ic.CancellationToken);
if (token.Type == ImapTokenType.QString) {
var qstring = (string) token.Value;
delim = qstring[0];
} else if (token.Type == ImapTokenType.Nil) {
delim = '\0';
} else {
throw ImapEngine.UnexpectedToken (token, false);
}
// parse the folder name
token = engine.ReadToken (ImapStream.StringSpecials, ic.CancellationToken);
switch (token.Type) {
case ImapTokenType.Literal:
encodedName = engine.ReadLiteral (ic.CancellationToken);
break;
case ImapTokenType.QString:
case ImapTokenType.Atom:
encodedName = (string) token.Value;
break;
default:
throw ImapEngine.UnexpectedToken (token, false);
}
if (IsInbox (encodedName))
attrs |= FolderAttributes.Inbox;
if (engine.GetCachedFolder (encodedName, out folder)) {
attrs |= (folder.Attributes & ~(FolderAttributes.Marked | FolderAttributes.Unmarked));
folder.UpdateAttributes (attrs);
} else {
folder = engine.CreateImapFolder (encodedName, attrs, delim);
engine.CacheFolder (folder);
}
list.Add (folder);
}