当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《从C#程序读取Outlook消息时如何避免Outlook安全警报》经验,为你挑选了3个好方法。

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

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



1> 小智..:

我在访问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;
    }


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

2> Kasper..:

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


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

3> 小智..:

试试这个

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

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


我的Outlook 2007中禁用了所有这些选项.这是因为我们有Exchange Server吗?是否可以通过组策略或类似的设置来设置它?
我在2003年没有看到Programmatic Access
推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有