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