Из MailKit README:
Если IMAP-сервер поддерживает расширение SPECIAL-USE или XLIST (GMail), вы можете получить доступ к предварительно определенному All, Drafts, Flagged (aka Important),Папки «Нежелательная почта», «Отправленные», «Корзина» и т. Д., Например:
if ((client.Capabilities & (ImapCapabilities.SpecialUse | ImapCapabilities.XList)) != 0) {
var drafts = client.GetFolder (SpecialFolder.Drafts);
} else {
// maybe check the user's preferences for the Drafts folder?
}
В тех случаях, когда сервер IMAP не поддерживает расширения SPECIAL-USE или XLIST, для полученияпапки «Отправленные», «Черновики», «Корзина» и т. д.Например, вы могли бы использовать логику, подобную этой:
static string[] CommonSentFolderNames = { "Sent Items", "Sent Mail", "Sent Messages", /* maybe add some translated names */ };
static IFolder GetSentFolder (ImapClient client, CancellationToken cancellationToken)
{
var personal = client.GetFolder (client.PersonalNamespaces[0]);
foreach (var folder in personal.GetSubfolders (false, cancellationToken)) {
foreach (var name in CommonSentFolderNames) {
if (folder.Name == name)
return folder;
}
}
return null;
}
Используя LINQ, вы могли бы упростить это до чего-то более похожего на:
static string[] CommonSentFolderNames = { "Sent Items", "Sent Mail", "Sent Messages", /* maybe add some translated names */ };
static IFolder GetSentFolder (ImapClient client, CancellationToken cancellationToken)
{
var personal = client.GetFolder (client.PersonalNamespaces[0]);
return personal.GetSubfolders (false, cancellationToken).FirstOrDefault (x => CommonSentFolderNames.Contains (x.Name));
}
Другой вариант - разрешитьпользователь вашего приложения, чтобы настроить, какую папку он или она хочет использовать в качестве своей папки «Отправленные», «Черновики», «Корзина» и т. д.
Как вы справляетесь с этим, зависит от вас.