Outlook事件函数在共享邮箱-C上使用时会多次触发#
我有一个功能,可以检查每个新来的电子邮件收件箱,如果它是回复,它会把它移到“回复”文件夹 它在多人电脑的共享邮箱上运行。问题是,它会移动电子邮件文件,但会将同一电子邮件的多个副本创建到“回复”文件夹中。我怎样才能修好它 这是我的代码,任何帮助都将不胜感激 多谢各位Outlook事件函数在共享邮箱-C上使用时会多次触发#,outlook,vsto,outlook-addin,office-addins,Outlook,Vsto,Outlook Addin,Office Addins,我有一个功能,可以检查每个新来的电子邮件收件箱,如果它是回复,它会把它移到“回复”文件夹 它在多人电脑的共享邮箱上运行。问题是,它会移动电子邮件文件,但会将同一电子邮件的多个副本创建到“回复”文件夹中。我怎样才能修好它 这是我的代码,任何帮助都将不胜感激 多谢各位 Outlook.NameSpace outlookNameSpace; Outlook.MAPIFolder inbox; private Outlook.Items items; p
Outlook.NameSpace outlookNameSpace;
Outlook.MAPIFolder inbox;
private Outlook.Items items;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Outlook.NameSpace ns = Globals.ThisAddIn.Application.Session;
Outlook.MAPIFolder inbox = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
outlookNameSpace = this.Application.GetNamespace("MAPI");
string recipientName = "abc@abcd.com";
Outlook.Recipient recip = outlookNameSpace.CreateRecipient(recipientName);
recip.Resolve();
if (recip.Resolved)
{
inbox = outlookNameSpace.GetSharedDefaultFolder(recip, Outlook.OlDefaultFolders.olFolderInbox);
items = inbox.Items;
items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(items_ItemAdd);
}
}
我处理它的方式是,当我们的用户回复电子邮件时,它将保存自定义用户属性以及来自客户的原始电子邮件。用户属性是我们的用户名。当他们收到客户的回复时,插件会检查当前用户是否和原始电子邮件中保存的用户属性相同;然后加载项将电子邮件移动到文件夹。像这样,每个回复上的条件只有一次为真。那么为什么会有多个条目?是否为同一物品多次添加火焰?或者是因为它在多台机器上运行?您好,Dmitry,看起来是因为同一加载项在多台机器上运行,并且它们都在缓存模式下运行。有没有办法解决这个问题?谢谢。不是真的,除非您限制每个加载项仅在其自己的主邮箱上运行。即使这样,您也可能有多台计算机连接到同一个邮箱
void items_ItemAdd(object Item)
{
if (Item != null)
{
Outlook.MailItem mail = Item as Outlook.MailItem;
if (mail.MessageClass == "IPM.Note")
{
try
{
Outlook.Application app = Globals.ThisAddIn.Application;
if (Item is Outlook.MailItem)
{
if (mailItem.ConversationIndex.Length >= 64)
{
Outlook.Folder nonInbox = folder.Parent as Outlook.Folder;
string FolderName = "Reply";
Outlook.MAPIFolder DestFolder = null;
try
{
DestFolder = nonInbox.Folders[FolderName];
}
catch
{
}
try
{
mailItem.Move(DestFolder);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}