c# - ImapX - 无法使用 Message.Download() 重新下载信件
问题描述
我想从邮箱中获取信件的标题,然后完全重新下载一些信件:
static void Main(string[] args)
{
using (ImapX.ImapClient imap = new ImapX.ImapClient("imap.gmail.com", 993, true))
{
if (imap.Connect())
{
imap.Login("***************", "***************");
imap.Behavior.MessageFetchMode = ImapX.Enums.MessageFetchMode.Headers;
foreach (ImapX.Folder folder in imap.Folders)
refreshFolder(folder);
ImapX.Message msg = imap.Folders["INBOX"].Messages[0];
msg.Download(ImapX.Enums.MessageFetchMode.Full, true);
}
}
}
static void refreshFolder(ImapX.Folder folder)
{
foreach (ImapX.Folder subfolder in folder.SubFolders)
refreshFolder(subfolder);
if (folder.Selectable)
folder.Messages.Download();
}
上面的代码没有做我需要的 -msg
仍然没有任何东西,甚至在msg.Download(ImapX.Enums.MessageFetchMode.Full, true)
. 现在我意识到它试图从我上次下载的文件夹中获取数据并且它是空的。
但是,当不从其他文件夹下载消息时,我设法得到了完整的信:
static void Main(string[] args)
{
using (ImapX.ImapClient imap = new ImapX.ImapClient("imap.gmail.com", 993, true))
{
if (imap.Connect())
{
imap.Login("***************", "***************");
imap.Behavior.MessageFetchMode = ImapX.Enums.MessageFetchMode.Headers;
/*foreach (ImapX.Folder folder in imap.Folders)
refreshFolder(folder);*/
imap.Folders["INBOX"].Messages.Download();
ImapX.Message msg = imap.Folders["INBOX"].Messages[0];
msg.Download(ImapX.Enums.MessageFetchMode.Full, true);
}
}
}
我真的认为没有理由记住哪个文件夹包含特定字母,因为我只有Message
对象。如何获得剩余的信件?
解决方案
听起来您想要的是msg.DownloadRawMessage ();
,但是,它返回一个字符串并且不填充现有Message
结构,因此您必须这样做:
msg = Message.FromEml (msg.DownloadRawMessage ());
推荐阅读
- c++ - 'operator<<' 不匹配
- python - 为什么我在 django 教程中收到此模板错误?
- python-3.x - 如何将此矩阵展开为向量?
- macos - 如何在 MacOS 上订阅系统更改?
- typescript - 无法导出带有枚举作为字段的类型/接口
- openstack - 使用 Opendaylight 后端设置 DevStack 节点
- html - 如何将字符串数组绑定到 Angular 中的文本框字段?
- android - android 显示错误 org.json.JSONException: End of input at character 0 of
- javascript - 如何获取自定义 React Babel pragma 以将字符串作为参数而不是函数传递
- python - 您如何将参数传递给作为参数传递的脚本?