如何解决使用 Outlook 互操作,如何保存在 Inspector 中打开的附加 .msg?
我正在开发一个 Outlook 插件按钮,用于将活动邮件项目保存到文件系统。
它工作正常,除了 let arrofObj1 = [
{
apple: 17,mango: 15,},{
apple: 20,mango: 29,];
let arrofObj2 = [
{
banana: 60,pear: 19,{
banana: 50,pear: 39,];
let outPutIwant = [
{
apple: 17,banana: 60,banana: 50,];
附件:
当用户双击 .msg
时,会打开一个新的 Outlook 检查器窗口,显示该电子邮件。
接下来,用户单击我的加载项按钮以将该电子邮件保存到文件系统。此时抛出异常:
System.UnauthorizedAccessException: '您没有执行此操作的适当权限。'
如何从检查器窗口将附加的电子邮件保存到文件系统?
解决方法
TL;DR: 使用 mailItem.Copy().SaveAs()
。
问题是附加的电子邮件是只读的。出于某种原因,互操作禁止在只读电子邮件上调用 SaveAs
。
如果您调用 Copy()
,邮件项目的新实例不是只读的,可以毫无问题地保存到磁盘。
注意:在复制邮件项目之前,请检查它是否真的是只读的,因为根据邮件项目的大小,复制可能会很慢。使用 GetProperty
来确定; MailItem
遗憾的是没有内置 ReadOnly
属性。
bool isMailItemReadOnly = mailItem.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x0FF70003") == 0;
string path = @"C:\MyFolder\message.msg";
if (isMailItemReadOnly)
{
mailItem.Copy().SaveAs(path);
}
else
{
mailItem.SaveAs(path);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。