从C#程序读取Outlook消息时如何避免Outlook安全警报

Nag*_*aga 14 c# outlook

我要求从我的Outlook收件箱中读取C#程序中的主题,发件人地址和新邮件的邮件正文.但我收到安全警报'程序正在尝试访问您存储在Outlook中的电子邮件地址.你想要允许吗?

通过一些谷歌搜索我发现很少有第三方COM库来避免这种情况.但我正在寻找一个不需要任何第三方COM库的解决方案.

小智 15

我在访问Outlook邮件项目的发件人电子邮件地址时遇到了同样的问题.要避免"安全警报",请不要创建新的Application对象,而是使用Globals.ThisAddIn.Application来创建新的mailitem.

string GetSenderEmail(Outlook.MailItem item)
    {
        string emailAddress = "";
        if (item.SenderEmailType == "EX")
        {
            Outlook.MailItem tempItem = (Outlook.MailItem)Globals.ThisAddIn.Application.CreateItem(Outlook.OlItemType.olMailItem);
            tempItem.To = item.SenderEmailAddress;
            emailAddress = tempItem.Recipients[1].AddressEntry.GetExchangeUser().PrimarySmtpAddress.Trim();

        }
        else
        {
            emailAddress = item.SenderEmailAddress.Trim();

        }

        return emailAddress;
    }
Run Code Online (Sandbox Code Playgroud)

  • 如果您要创建一个实际的Outlook加载项(而不是正在使用Outlook的外部应用程序),那么这是正确的答案.在进程中,只要它们仅使用Outlook在启动时给出的Application对象(即不创建新的Application对象),就不会触发警告对话框. (4认同)

Kas*_*per 10

抱歉,我在Outlook 2003和Outlook 2007加载项中都遇到了这个烦人的问题,唯一有效的解决方案是购买Redemption许可证.在Outlook 2007中,如果您的防火墙已关闭,或者您的防病毒软件已经过时,那么只会出现讨厌的弹出窗口.

  • 我不知道你们,但我想楼下Kumar的回答(用`oOutlookApp = Globals.ThisAddIn.Application`,而不是创建一个新的Outlook对象,这对我来说真是棒极了,你应该完全投了他的答案! :-)) (3认同)

小智 5

试试这个

工具 - >宏 - >安全 - >程序访问

然后选择从不警告我可疑活动.

  • 我的Outlook 2007中禁用了所有这些选项.这是因为我们有Exchange Server吗?是否可以通过组策略或类似的设置来设置它? (2认同)
  • 我在2003年没有看到Programmatic Access (2认同)