2014-05-14 20 views
2

Я получаю следующую ошибку исключения, пытающуюся загрузить вложение файла в память при использовании функции .load().Отсутствует обязательный атрибут «Id»

Обязательный атрибут '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 

ответ

1

Метод Load() загружает вложение путем вызова EWS. Из вашего фрагмента кода он будет терпеть неудачу, поскольку объект электронной почты еще не создан в Exchange, поэтому у него нет идентификатора, на который нужно ссылаться. (ref: http://msdn.microsoft.com/en-us/library/office/microsoft.exchange.webservices.data.attachment.load(v=exchg.80).aspx)

Можете ли вы дать немного больше информации о проблеме, которую вы пытаетесь решить? Из приведенного выше комментария вы упомянули о возможности прикрепления письма к другому родительскому письму. Вам может быть интересно взглянуть на добавление ItemAttachments в ссылку @JPRO, приведенную выше. Также см. Класс AttachmentCollection: http://msdn.microsoft.com/en-us/library/office/microsoft.exchange.webservices.data.attachmentcollection_methods(v=exchg.80).aspx

Опять же, поскольку я не знаю, какую проблему вы пытаетесь решить, они могут быть полезны или могут быть вам полезны. Было бы полезно, если бы вы могли дать немного больше контекста.

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(); 
+0

jpg был всего лишь примером ... на самом деле это xml-файл. В большей картине я хотел бы добавить электронное письмо на другое электронное письмо (emailParent) в качестве вложения и отправить его. Но нет никакой функции, где я могу сделать что-то вроде: emailParent.Attachments.Add (email). Добавить() не вариант. Предложения? – Mattkoen

+1

Когда вы говорите, добавьте электронное письмо на другое электронное письмо, я предполагаю, что вы не имеете в виду пересылку оригинала. В этом случае есть два варианта. Параметры, которые вы сохраняете в качестве адреса электронной почты в качестве файла, затем используйте AddFileAttachment, как в приведенном выше ответе. Вариант 2 вы изучаете преобразование дочернего объекта электронной почты в поток, который затем вы можете вызвать parentEmail.Attachments.Add (новое вложение (поток, contentType) – JPRO

0

ID устанавливается внутри, возможно файл, указанный не существует в каталоге выполнения?

Вы попробовали загрузить его в качестве потока вместо этого? (http://msdn.microsoft.com/en-us/library/dd634477(v=exchg.80).aspx)

+0

Файл существует, как при вызове электронной почты .SendAndSaveCopy() файл находится в email в моем почтовом ящике Outlook. Я попытался добавить в поток байтов, но это все еще не устанавливает идентификатор внутри ... – Mattkoen

Смежные вопросы