【问题标题】:Reply twice from outlook add in itemadd event从 Outlook 回复两次添加 itemadd 事件
【发布时间】:2015-04-13 15:27:24
【问题描述】:

我需要从 Outlook 加载项 item_Add 事件中回复两次,一次是在邮件到达时,一次是在一些处理之后。注册回调的代码如下所示:

void items_ItemAdd(object Item)
{
  Outlook.MailItem mail = (Outlook.MailItem)Item;
  Outlook.MailItem reply = mail.Reply();
  // Add some stuff to reply body and subject
  reply.Send();
  Marshal.ReleaseComObject(reply); 
  // Some processing for few seconds
  reply = mail.Reply();
  // Update reply body and subject
  reply.Send()
  // Release reply object
}

我遇到的问题是处理完成后最后发送了 2 个回复。有没有办法立即发送第一个回复而不等到最后?

【问题讨论】:

    标签: office-interop outlook-addin


    【解决方案1】:

    注意,您从事件处理程序运行代码。处理程序应将控制流返回给 Outlook 以处理您的回复。

    您可以尝试使用命名空间类的SyncObjects 属性来强制同步。

    Public Sub Sync() 
      Dim nsp As Outlook.NameSpace  
      Dim sycs As Outlook.SyncObjects  
      Dim syc As Outlook.SyncObject  
      Dim i As Integer  
      Dim strPrompt As Integer  
      Set nsp = Application.GetNamespace("MAPI")  
      Set sycs = nsp.SyncObjects  
      For i = 1 To sycs.Count  
        Set syc = sycs.Item(i)  
        strPrompt = MsgBox("Do you wish to synchronize " & syc.Name &"?", vbYesNo)  
        If strPrompt = vbYes Then  
         syc.Start   
        End If  
      Next  
    End Sub
    

    【讨论】:

    • 感谢您的回答。您提供的详细信息有所帮助。我不得不稍微修改一下方法,我会把它作为答案发布。
    【解决方案2】:

    我修改了如下代码:

    ...
    outlookNameSpace = this.Application.GetNamespace("MAPI");
    ...
    void items_ItemAdd(object Item)
    {
      Outlook.MailItem mail = (Outlook.MailItem)Item;
      Outlook.MailItem reply = mail.Reply();
      // Add some stuff to reply body and subject
      reply.Send();
      outlookNameSpace.Session.SendAndReceive(false);
      Marshal.ReleaseComObject(reply); 
      // Some processing for few seconds
      reply = mail.Reply();
      // Update reply body and subject
      reply.Send()
      // Release reply object
    }
    

    谢谢

    【讨论】:

      猜你喜欢
      • 2014-07-31
      • 2014-07-11
      • 2017-06-27
      • 2022-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-28
      • 1970-01-01
      相关资源
      最近更新 更多