gpt4 book ai didi

c# - AccessViolationException 在 Outlook 2007 中读取电子邮件发件人

转载 作者:行者123 更新时间:2023-11-30 12:14:00 32 4
gpt4 key购买 nike

当我尝试通过 MailItem.Sender 获取电子邮件地址时,出现了 AccessViolationException。 Outlook 2007 (Windows XP) 上的地址。当我在 Outlook 2010 (Windows 7) 上运行相同的代码时,我没有收到此错误。

Outlook.MailItem email = inbox.Items[i] as Microsoft.Office.Interop.Outlook.MailItem;
Outlook.MailItem email
Console.WriteLine("Subject: " + email.Subject);
Console.WriteLine("Sender: " + email.Sender); <-- Exception Here!
Console.WriteLine("Addr: " + email.Sender.Address);

控制台: 错误:System.AccessViolationException:试图读取或写入 protected 内存。 方法:get_Sender()

最佳答案

这表明您正在使用早期版本接口(interface)未公开的属性 - MailItem.Sender 属性已添加到 Outlook 2010 中。当您针对 Outlook 2007 运行代码时,调用会经过对象的 v-表,因此访问冲突。

解决方法是使用 MailItem.PorpertyAccessor.GetProperty 读取 PR_SENDER_ENTRYID MAPI 属性(DASL 名称 http://schemas.microsoft.com/mapi/proptag/0x0C190102)并使用它来调用命名空间.GetAddressEntryFromID。

关于c# - AccessViolationException 在 Outlook 2007 中读取电子邮件发件人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10625039/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com