【问题标题】:VSTO Outlook Addin: wired Item object in Application_ItemSend argumentsVSTO Outlook 插件:Application_ItemSend 参数中的有线项目对象
【发布时间】:2017-01-07 14:42:56
【问题描述】:

我为 Outlook 2016(Office 365 的一部分)编写了一个简单的 VSTO 插件,以检查是否有一些我们公司以外的电子邮件地址混合在收件人列表中。 我简化了如下代码:

      int countExternalAddress;
      string externalAddresses;
      string internalDomain=“@example.com”; 
     //indicates the email domain of our company, we use exchange server.

     private void Application_ItemSend(object Item, ref bool Cancel)
     {

        countExternalAddress = 0;
        externalAddresses="";

        Outlook.MailItem item = (Outlook.MailItem)Item;

        foreach (Outlook.Recipient recp in item.Recipients)
        {
             ConvertExchangeAddrToSMTPAddr(recp.AddressEntry.Address);
             //by access ExchangeUser.PrimarySmtpAddress
             CheckTheAddress(recp.AddressEntry.Address);
        }

        if (countExternalAddress > 0)
        {
           Warn();
        }

     }

代码大部分时间都没有问题,但有时 Warn() 函数会根据(部分)最后一封电子邮件的收件人显示警告,而不是当前邮件。 问题一直无法重现,但出现时的流程是这样的:

  1. 向内部收件人(我的同事,交换地址)发送电子邮件,交换地址成功转换为 SMTP 地址,因为它们被预定义为“内部”地址,邮件将在没有警告的情况下发送。
  2. 向其他一些内部收件人发送另一封电子邮件,程序显示“外部地址混合”的警告,并且“外部”地址来自之前发送的电子邮件(上面1中提到,并非所有地址都只是其中一个),并且,检测到的外部地址是 Exchange 地址格式,应该转换为 SMTP 格式。 奇怪的是,我在当前电子邮件的收件人列表中找不到地址。 如果我保存当前电子邮件并重新启动 Outlook,当我选择保存的电子邮件并尝试重新发送时,将不会再次检测到这样的“外部”地址。

    看起来 ItemSend 事件传递的 Item 对象包含一些收件人,不仅属于当前电子邮件,还来自以前发送的电子邮件,但它们在当前电子邮件中不可见,而且我找不到这样的收件人在发送的电子邮件中也是如此。 我正在使用的工作 PC 没有调试环境,所以我的钱用完了。请给我您的帮助,在此先感谢。

【问题讨论】:

  • 这可能与我安装后删除了 .vsto 文件有关吗?安装后dll文件被复制到appdata/app,所以我认为.vsto文件不再有用了。

标签: c# vsto outlook-addin


【解决方案1】:

这和你做的有什么关系吗>

if (countExternalAddress > 0) { Warn(); }

而不是==

if (countExternalAddress == 0)
    {
       Warn();
    }

看起来很奇怪,但它会多留下一封电子邮件来警告您。

【讨论】:

  • 感谢您的及时回复。但是 == 表示没有找到外部地址,所以我认为 > 是正确的使用吗?
  • 没问题的朋友。让我知道这是否有效。你让我好奇了。如果它确实有效,则必须更多地考虑这个问题,这可能存在于您的 warn();功能。
  • 警告函数只有一个带有取消按钮的消息框。我仍然不明白为什么你认为它应该是 == 而不是 > ?此外,我无法在我家的这台 PC 上重现该问题...
  • 事情在另一个地方变成了我的错,似乎没有关系,但确实如此。忘记这个线程。谢谢。
猜你喜欢
  • 1970-01-01
  • 2022-07-22
  • 1970-01-01
  • 1970-01-01
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多