如何通过ipworks获取文档

时间:2013-07-24 13:24:39

标签: c# email parsing imap ipworks

库ipworks提供了一些获取textmessage的方法。

在文档中,我找不到如何使用imaps通过ipworks库读取附件。

1 个答案:

答案 0 :(得分:5)

我为/ 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与我们联系。