访问违规在 Outlook 2007 中读取电子邮件发件人的异常

本文关键字:电子邮件 异常 读取 Outlook 2007 访问 | 更新日期: 2023-09-27 18:34:18

当我尝试通过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);

安慰: 错误: 系统访问违规异常: 试图读取或写入受保护的内存。 方法: get_Sender()

访问违规在 Outlook 2007 中读取电子邮件发件人的异常

这表示您正在使用的不是由早期版本的接口公开的属性 - MailItem.Sender 属性是在 Outlook 2010 中添加的。当您针对 Outlook 2007 运行代码时,调用将越过对象的反表,因此存在访问冲突。

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

如上所述:

是的。我有一个解决方法:电子邮件。发件人电子邮件地址

引用

  • 互操作性疑难解答 (Visual Basic)