我正在尝试解决一些问题,其中有一些联系信息作为Outlook的*。msg文件提供。我想使用脚本来解析这些文件以提取联系人电子邮件和姓名。我尝试了几种解决方案:
关于此问题的任何建议?
谢谢
Suresh
如果选择使用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);
}
}
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);
}
}
}
}
我们为您迟到了而感到抱歉。
使用Aspose API时遇到什么实际问题?该API可以读取Outlook Contact .MSG文件以及通讯组列表,而无需安装MS Outlook。请查看以下文档文章:
如果在使用最新版本的API检索所需信息时仍然遇到问题,可以将查询以及示例MSG文件发布到Aspose.Email forum。我们将在最后进行调查,并为您提供进一步的帮助。
我与Aspose合作,担任开发人员。
使用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();
}
}