我需要从 C# 程序读取 Outlook 收件箱中新邮件的主题、发件人地址和邮件正文。但是我收到了安全警报“一个程序正在尝试访问您存储在 Outlook 中的电子邮件地址。你想允许这个吗?
通过一些谷歌搜索,我发现很少有第三方 COM 库可以避免这种情况。但我正在寻找一种不需要任何第三方 COM 库的解决方案。
我在访问 Outlook 邮件项目的发件人电子邮件地址时遇到了同样的问题。为了避免“安全警报”,不要创建新的应用程序对象,而是使用Globals.ThisAddIn.Application来创建新的邮件项。
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 2003 和 Outlook 2007 加载项中都遇到了这个烦人的问题,唯一有效的解决方案是购买兑换许可证。据我所知,在 Outlook 2007 中,只有当您的防火墙已关闭或您的防病毒软件已过时,才会出现令人讨厌的弹出窗口。
试试这个
工具-->宏-->安全-->程序访问
然后选择从不就可疑活动向我发出警告。
“但我正在寻找一种不需要任何第三方 COM 库的解决方案。”
你不会找到它。Kasper 已经指出了我所知道的唯一解决方案。赎回是保持 Outlook 插件和代码正常工作的唯一方法。我为富兰克林柯维做过商业 Outlook 插件。我们探索了很多东西,但救赎是唯一让我们克服这一障碍的东西。
如果您的应用程序不是 Outlook 插件,您可以查看MAPI以从收件箱中读取数据
为此,我们使用Mapilab 的Outlook Advanced Security 。它是免费的,也可用于商业用途,并且仍然保证 Outlook 的安全(仅允许从批准的应用程序访问)。刚才提到的解决方案要么花钱,要么可能危及安全。
您可以使用 Outlook 的信任中心禁用安全弹出窗口。在这里检查。