【问题标题】:Capture the event of a sent email in outlook在 Outlook 中捕获已发送电子邮件的事件
【发布时间】:2013-05-02 07:32:35
【问题描述】:

我正在为 Outlook 和 我正在尝试捕获从 Outlook 发送的邮件的事件。 在网络上,我发现了很多发送电子邮件的示例,但我需要知道已发送电子邮件的事件。 有一种方法或过程来挂钩这个特定的事件吗? 谢谢

【问题讨论】:

    标签: c# events outlook outlook-addin


    【解决方案1】:

    使用Application.ItemSend 事件。

    【讨论】:

      【解决方案2】:

      如果发送邮件项目,则有一个包含布尔值的变量。 您可以发送邮件并检查该布尔值。

      mailItem.Send();
      if (mailItem.Sent) 
      {
          // Do your thing
      }    
      

      【讨论】:

      • 感谢您的回答。我的目标是接收已发送电子邮件的事件,但我无法到达它,因为我不知道该怎么做。有一种检查/测试可以有效地尝试我做正确的事?
      【解决方案3】:

      我想出了一个简单可爱的解决方法,不使用插件

      在向用户显示后检查 MailItem.Sent 值,如果它是假的,那么你知道电子邮件在没有发送的情况下被关闭,如果它没有值,意味着你得到一个错误“项目被删除或删除”,这意味着电子邮件已发送,这就是对象消失的原因

      试试看

      MailItem.Display(True)
      
      Try
           Dim sent As Boolean = MailItem.sent
           'msg was closed without sending
      Catch ex As Exception
           'msg was sent
      End Try
      

      【讨论】:

      • 那不行——消息提交是一个异步过程。消息将在很久以后(几秒甚至几分钟)发送并移动到“已发送邮件”文件夹。
      • 对我来说效果很好,当用户关闭消息而不发送时,我仍然拥有对象并且 MailItem.sent 值为 false - 但如果用户单击发送,则我会丢失对象和 MailItem .sent 不存在了
      • 该属性存在得很好——它只是引发了一个异常,因为不允许您对提交的消息进行任何操作。您所依赖的行为会随着任何 Outlook 更新而改变。
      猜你喜欢
      • 1970-01-01
      • 2022-06-29
      • 2017-06-11
      • 2011-10-05
      • 1970-01-01
      • 2010-09-25
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      相关资源
      最近更新 更多