创建Outlook加载项,显示我没有回复的电子邮件

时间:2013-07-29 06:48:24

标签: c# .net outlook ms-office

我的目标是拥有一个带有2个日期参数的加载项,并显示我没有回复的电子邮件。我的想法是比较收件箱和发件箱之间的会话ID,并显示匹配的电子邮件。

在制作Outlook插件方面,我有点像菜鸟,所以非常感谢任何帮助或建议。

我找到了这段代码:

Microsoft.Office.Interop.Outlook.Application app = null;
Microsoft.Office.Interop.Outlook._NameSpace ns = null;
Microsoft.Office.Interop.Outlook.PostItem item = null;
Microsoft.Office.Interop.Outlook.MAPIFolder inboxFolder = null;
Microsoft.Office.Interop.Outlook.MAPIFolder subFolder = null;

try 
{
  app = new Microsoft.Office.Interop.Outlook.Application();
  ns = app.GetNamespace("MAPI");
  ns.Logon(null,null,false, false);

  inboxFolder = ns.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderInbox);
  subFolder = inboxFolder.Folders["MySubFolderName"]; //folder.Folders[1]; also works

// there's of course code after this but I've omitted it from the post
}

我有两个问题。 首先,什么是MAPI文件夹? 其次在我的inboxFolder中,我可以以某种方式将参数传递给GetDefaultFolder方法,仅在两个日期之间接收收件箱邮件吗?

其次, 如果我对发件箱文件夹做同样的事情, 有没有办法比较inboxFolder和outboxFolder,并创建一个新的集合,只有与ConversationID匹配的电子邮件?

提前致谢

1 个答案:

答案 0 :(得分:1)

  1. MAPIFolder -see http://msdn.microsoft.com/en-us/library/office/aa210948(v=office.11).aspx。您可能希望使用OutlookSpy来查看各种Outlook对象。

  2. 您需要使用Items.Find / FindNext或Items.Restrict来过滤消息。

  3. 不要比较收件箱和已发送邮件文件夹,而是查看PR_LAST_VERB_EXECUTED属性(可使用MailItem.PropertyAccessor.GetProperty访问),以查看邮件是否已被回复或转发。