这是我的代码 有两种方法,一种是通知邮件,它在收到新邮件时调用 外表。第二种方法是mailProcessTrigger它执行一些 更改邮件。我想运行 mailProcessTrigger()方法 另一个 线程,它每5分钟调用一次。我无法采用这种方法 多线程。
namespace PhishCOP
{
public partial class Phishing
{
Outlook.Application outlookApp;
Outlook.MAPIFolder deleterFolder = null;
Outlook.Items mailItems = null;
Outlook.MAPIFolder inboxFolder = null;
Outlook.Items items;
string SchemaTransportHeader = @"http://schemas.microsoft.com/mapi/proptag/0x007D001E";
const string PR_ATTACH_DATA_BIN = "http://schemas.microsoft.com/mapi/proptag/0x37010102";
private void Phishing_Load(object sender, RibbonUIEventArgs e)
{
outlookApp = new Outlook.Application();
inboxFolder = outlookApp.ActiveExplorer().Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
deleterFolder = outlookApp.ActiveExplorer().Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderJunk);
mailItems = inboxFolder.Items;//.Restrict("[Unread]=true");
mailItems.Sort("[ReceivedTime]", true);
AddACategory();
items = inboxFolder.Items;
items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(CallFunction);
}
private void CallFunction(object data)
{
//move mail to another folder
}
private void mailProcessTrigger()
{
//mail process
}
}
}
答案 0 :(得分:2)
Outlook对象模型中的项目不能在后台线程中使用,这将导致加载项不稳定,并可能导致加载项和Outlook崩溃。您只能将Extended MAPI与C ++或Redemption一起使用,以运行多线程Outlook解决方案。