在.pst文件中获取邮件的多个地址
本文关键字:地址 pst 文件 获取 | 更新日期: 2023-09-27 18:14:39
我已经成功地通过c#阅读了。pst文件。
问题是,如果邮件有多个收件人(即发件人电子邮件地址),那么我无法获得这些多个地址。代码
Outlook.Application app = new Outlook.Application();
Outlook.NameSpace outlookNs = app.GetNamespace("MAPI");
outlookNs.AddStore(@"D:'pst'Test.pst");
Outlook.MAPIFolder emailFolder = outlookNs.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderSentMail);
List<MailItem> lstMails = emailFolder.Items.OfType<MailItem>().Where(x=>x.SenderEmailAddress.Contains("hari")).Select(x=>x).ToList();
foreach (Object obj in emailFolder.Items)
{
if(obj is MailItem)
{
MailItem item = (MailItem)obj;
Console.WriteLine(item.SenderEmailAddress + " " + item.Subject + "'n" + item.Body);
}
}
项目。SenderEmailAddress为多个收件人返回一个非常奇怪的地址,如果我已经制作了任何一组人并向他们发送邮件,那么也。
因此任何人都可以指导如何读取这些多个地址以及组的名称。
试试这个
Outlook.Application app = new Outlook.Application();
Outlook.NameSpace outlookNs = app.GetNamespace("MAPI");
outlookNs.AddStore(@"D:'pst'Test.pst");
Outlook.MAPIFolder emailFolder = outlookNs.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderSentMail);
List<MailItem> lstMails = emailFolder.Items.OfType<MailItem>().Where(x=>x.SenderEmailAddress.Contains("hari")).Select(x=>x).ToList();
foreach (Object obj in emailFolder.Items)
{
if(obj is MailItem)
{
MailItem item = (MailItem)obj;
String user=String.Empty;
foreach (Object obj1 in ((dynamic)item).Recipients)
{
user += ((dynamic)obj1).Name + ";";
}
Console.WriteLine(user + " " + item.Subject + "'n" + item.Body);
}
}
请注意,不要在Outlook中使用LINQ。这在您的代码中看起来可能很酷,但是您需要认识到所有的处理都是在客户端完成的,这与显式地遍历文件夹中的所有项没有任何不同。使用物品。Restrict或Find/FindNext——搜索将由存储提供者执行。