从Outlook联系人组中提取联系人信息作为* .msg文件可用

问题描述 投票:0回答:4

我正在尝试解决一些问题,其中有一些联系信息作为Outlook的*。msg文件提供。我想使用脚本来解析这些文件以提取联系人电子邮件和姓名。我尝试了几种解决方案:

  • 我尝试使用Aspose's电子邮件库,但无法获取联系方式。
  • 如果我使用Outlook打开。msg文件并将其另存为。txt文件,则生成的文件是带有列出的联系信息的简单文本文件,我可以用IO库并提取信息。但是,我有数百个这些.msg文件。我正在使用.NET,但无法弄清楚如何实现我可以手动执行的“ 另存为”文本。

关于此问题的任何建议?

谢谢

Suresh

c# outlook aspose outlook-redemption msg
4个回答
0
投票

如果选择使用Redemption,则应执行以下操作:

Redemption.RDOSession session = new Redemption.RDOSession();
Redemption.RDOMail msg = session.GetMessageFromMsgFile(@"c:\temp\TestContact.msg");
//is it really a contact? Could be a regular message or an RDODistListItem (all derived from RDOMail)
Redemption.RDOContactItem contact = msg as Redemption.RDOContactItem; 
if (contact != null)
{
  MessageBox.Show(contact.FirstName);
}
else 
{
   Redemption.RDODistListItem dl= msg as Redemption.RDODistListItem; 
   if (dl != null)
   {
      MessageBox.Show(dl.FileAs);
    }
}

0
投票
RDOSession session = RedemptionLoader.new_RDOSession();
session.Logon();
RDOFolder folder = session.GetDefaultFolder(rdoDefaultFolders.olFolderContacts);
Console.WriteLine("Extracting contacts...");

foreach (RDOFolder subFolder in folder.Folders)
{
    if (subFolder.Name == "CAS_Notifications")
    {
        foreach (var rdoItem in subFolder.Items)
        {
            RDOContactItem contactItem = rdoItem as RDOContactItem;
            RDODistListItem distList = rdoItem as RDODistListItem;
            if (distList != null)
            {
                Console.WriteLine("Distribution List");
                foreach (RDOAddressEntry rdoAddressEntry in distList.OneOffMembers)
                {
                    Console.WriteLine("Name: {0}; Email: {1}", rdoAddressEntry.Name, rdoAddressEntry.SMTPAddress);
                }
            }
            else if (contactItem != null)
            {
                Console.WriteLine("Name: {0}; Email: {1}", contactItem.FullName, contactItem.Email1Address);
            }
        }
    }
}

0
投票

我们为您迟到了而感到抱歉。

使用Aspose API时遇到什么实际问题?该API可以读取Outlook Contact .MSG文件以及通讯组列表,而无需安装MS Outlook。请查看以下文档文章:

如果在使用最新版本的API检索所需信息时仍然遇到问题,可以将查询以及示例MSG文件发布到Aspose.Email forum。我们将在最后进行调查,并为您提供进一步的帮助。

我与Aspose合作,担任开发人员。


0
投票

使用Apose.Email API,我们可以提取联系人电子邮件信息。您可以尝试此操作。我很累,并能够提取这些信息

        MapiMessage message = MapiMessage.FromFile(msgPath);
        MapiPropertyCollection properties = message.NamedProperties;

        foreach (KeyValuePair<long, MapiProperty> prop in properties)
        {
            if (((prop.Value).Descriptor).CanonicalName != null)
            {
                if (((prop.Value).Descriptor).CanonicalName == "PidLidEmail1DisplayName")
                {
                    string email1displayName = prop.Value.ToString();                     
                }
                if (((prop.Value).Descriptor).CanonicalName == "PidLidEmail1EmailAddress")
                {
                    string email1Address = prop.Value.ToString();
                }
                if (((prop.Value).Descriptor).CanonicalName == "PidLidInstantMessagingAddress")
                {
                    string ADD = prop.Value.ToString();
                }
            }
© www.soinside.com 2019 - 2024. All rights reserved.