缺少必需的属性“Id”

时间:2014-05-14 15:07:15

标签: c# exception exchangewebservices

使用.load()函数时,尝试将文件附件加载到内存中时出现以下异常错误。

  

所需属性' Id'缺少

我无法显式分配Id属性,因为它是只读的。有什么想法吗?

EmailMessage email = new EmailMessage(Exchange);
email.Attachments.AddFileAttachment("picture.jpg");
email.Attachments[0].IsInline = true;
email.Attachments[0].ContentId = "picture.jpg";
email.Attachments[0].Load(); // Errors here

3 个答案:

答案 0 :(得分:1)

Load()方法通过进行EWS调用来加载附件。从您的代码段开始,它必然会失败,因为尚未在Exchange中创建电子邮件对象,因此它没有要引用的ID。 (参考:http://msdn.microsoft.com/en-us/library/office/microsoft.exchange.webservices.data.attachment.load(v=exchg.80).aspx

您能否为您要解决的问题提供更多背景信息? 从上面的评论中,您提到能够将电子邮件附加到另一个父电子邮件。您可能有兴趣看看在上面提供的@JPRO链接中添加ItemAttachments。 另请参阅AttachmentCollection类:http://msdn.microsoft.com/en-us/library/office/microsoft.exchange.webservices.data.attachmentcollection_methods(v=exchg.80).aspx

同样,由于我不知道您要解决的问题,这些可能对您有用,也可能没有用。如果你能提供更多的背景,那将会很有帮助。

答案 1 :(得分:0)

您是否有理由需要使用Load?基于this reference我相信你可以附上这样的jpg:

EmailMessage email = new EmailMessage(Exchange);
byte[] picBytes = File.ReadAllBytes(@"path\to\picture.jpg");
email.Attachments.AddFileAttachment("picture.jpg", picBytes);
email.SendAndSaveCopy();

答案 2 :(得分:0)

ID在内部设置,您指定的文件是否可能不存在于执行目录中?

您是否尝试过将其作为流加载? (http://msdn.microsoft.com/en-us/library/dd634477(v=exchg.80).aspx