如何通过 ipworks 获取文档
Posted
技术标签:
【中文标题】如何通过 ipworks 获取文档【英文标题】:how to fetch documents via ipworks 【发布时间】:2013-07-24 13:24:39 【问题描述】:库 ipworks 提供了一些获取文本消息的方法。
在文档中,我没有找到如何使用 imaps 通过 ipworks 库读取附件。
【问题讨论】:
你有没有尝试过? 我尝试了 FetchMessages() 和 FetchInfo() 方法。最后 MessageContentEncoding 属性为空。 【参考方案1】:我为 /n 软件工作,我们在这里遇到了您的问题。根据这个问题的标签,您可能正在使用我们的 .NET 版本和 C# 代码,因此我将使用 C# 代码作为示例。
从 Imaps 组件中检索附件需要您使用 MessageParts 属性。此属性包含下载的电子邮件中各个 MIME 部分的集合。通常,前两部分将是电子邮件的 html 正文(如果适用)和电子邮件的纯文本正文。任何附件都将在剩余的 MIME 部分中。您可以使用类似于以下的代码从选定的电子邮件中检索附件:
Imaps imap = new Imaps();
imap.OnSSLServerAuthentication += new Imaps.OnSSLServerAuthenticationHandler(delegate(object sender, ImapsSSLServerAuthenticationEventArgs e)
//Since this is a test, just accept any certificate presented.
e.Accept = true;
);
imap.MailServer = "your.mailserver.com";
imap.User = "user";
imap.Password = "password";
imap.Connect();
imap.Mailbox = "INBOX";
imap.SelectMailbox();
imap.MessageSet = "X"; //Replace "X" with the message number/id for which you wish to retrieve attachments.
imap.FetchMessageInfo();
for (int i = 0; i < imap.MessageParts.Count; i++)
if (imap.MessageParts[i].Filename != "")
//The MessagePart Filename is not an empty-string so this is an attachment
//Set LocalFile to the destination, in this case we are saving the attachment
//in the C:\Test folder with its original filename.
//Note: If LocalFile is set to an empty-string the attachment will be available
// through the MessageText property.
imap.LocalFile = "C:\\Test\\" + imap.MessageParts[i].Filename;
//Retrieve the actual attachment and save it to the location specified in LocalFile.
imap.FetchMessagePart(imap.MessageParts[i].Id);
imap.Disconnect();
请注意,单独的 MIME 部分也可能采用 base64 编码。如果您希望我们的组件自动解码这些部分,那么您需要将“AutoDecodeParts”属性设置为“true”。这应该在调用 FetchMessageInfo 方法之前完成。请看下面的例子:
imap.AutoDecodeParts = true;
imap.FetchMessageInfo();
电子邮件也有可能包含嵌套的 MIME 结构。这是一个更复杂的情况,需要递归方法来解构嵌套的 MIME 结构。我们的 MIME 组件(在我们的 IP*Works 和 IP*Works S/MIME 产品中可用)对此非常有帮助。
如果您需要其他语言的示例、处理嵌套 MIME 结构的示例,或者如果您有任何其他问题,请随时通过 support@nsoftware.com 与我们联系。
【讨论】:
非常感谢。我明白了。是的,它是 C#。以上是关于如何通过 ipworks 获取文档的主要内容,如果未能解决你的问题,请参考以下文章
使用 IPWorks nSoftware 的 Json 反序列化 BodyStyle Wrap 问题