C# VSTO Outlook加载项:应用程序中的有线项目对象\u ItemSend参数
我为Outlook 2016(office 365的一部分)编写了一个简单的VSTO加载项,以检查收件人列表中是否混合了一些公司以外的电子邮件地址。 我将代码简化如下:C# VSTO Outlook加载项:应用程序中的有线项目对象\u ItemSend参数,c#,vsto,outlook-addin,C#,Vsto,Outlook Addin,我为Outlook 2016(office 365的一部分)编写了一个简单的VSTO加载项,以检查收件人列表中是否混合了一些公司以外的电子邮件地址。 我将代码简化如下: int countExternalAddress; string externalAddresses; string internalDomain=“@example.com”; //indicates the email domain of our company, we use
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()函数会根据上一封电子邮件的收件人(部分)而不是当前的收件人显示警告。
问题不可能一直重现,但当问题发生时,程序如下:
这和你做的事有什么关系吗
if(countExternalAddress>0)
{
警告();
}
而不是==
if (countExternalAddress == 0)
{
Warn();
}
这似乎很奇怪,但会留下一封电子邮件来警告您。这与您的行为有关吗
if(countExternalAddress>0)
{
警告();
}
而不是==
if (countExternalAddress == 0)
{
Warn();
}
这似乎有些奇怪,但会留下一封电子邮件提醒您。谢谢您的及时回复。但是==意味着找不到外部地址,所以我认为>是正确的地址吗?没问题,朋友。让我知道这是否有效。你现在让我好奇。如果它确实起作用,那么这个问题就必须考虑更多因素,这可能存在于您的warn()中;警告功能只有一个带有取消按钮的消息框。我还是不明白你为什么认为它应该是==不是>?此外,我无法在家里的这台电脑上重现问题……在另一个地方,事情变成了我的错,似乎没有关系,但确实如此。忘了这根线吧。谢谢。谢谢你的及时回复。但是==意味着找不到外部地址,所以我认为>是正确的地址吗?没问题,朋友。让我知道这是否有效。你现在让我好奇。如果它确实起作用,那么这个问题就必须考虑更多因素,这可能存在于您的warn()中;警告功能只有一个带有取消按钮的消息框。我还是不明白你为什么认为它应该是==不是>?此外,我无法在家里的这台电脑上重现问题……在另一个地方,事情变成了我的错,似乎没有关系,但确实如此。忘了这根线吧。谢谢。这可能与我在安装后删除了.vsto文件有关吗?dll文件在安装后复制到appdata/app,因此我认为.vsto文件不再有用。这可能与我在安装后删除了.vsto文件有关吗?dll文件在安装后复制到appdata/app,因此我认为.vsto文件不再有用。