2013-07-30 5 views
4

Я создаю небольшой клиент, который может автоматически отвечать на некоторые письма. Я хотел бы добавить к этим ответам специальный интернет-заголовок.EWS Managed API: Ответ на сообщение при добавлении заголовка Интернета

Что я пытался сделать, это установить расширенное свойство на получаемое электронное письмо и использовать метод EmailMessage.Reply.

Но это не работает. Я также попытался использовать EmailMessage.CreateReply. Однако он создает объект ResponseMessage, который не имеет метода SetExtendedProperty.

Эта соответствующая часть кода:

private static readonly ExtendedPropertyDefinition _redFlag = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.InternetHeaders, "X-RED", MapiPropertyType.String); 
private static readonly PropertySet _customHeaders = new PropertySet(BasePropertySet.FirstClassProperties, _redFlag); 

/* ... some code to connect to Exchange Service ... */ 

EmailMessage email = EmailMessage.Bind(_service, id, _customHeaders); 
email.SetExtendedProperty(_redFlag, "test"); 
email.Reply(new MessageBody(answer), false); 

ответ

4

Сначала необходимо сохранить ResponseMessage в Drafts папке via the Save() method, а затем вы можете получить экземпляр EmailMessage. Это same pattern used to add attachments to message replies.

var message = (EmailMessage) Item.Bind(service, new ItemId(uniqueId), PropertySet.FirstClassProperties); 
var reply = message.CreateReply(false); 
reply.BodyPrefix = "Response text goes here"; 
var replyMessage = reply.Save(WellKnownFolderName.Drafts); // default is drafts folder - this is explicit 
replyMessage.SetExtendedProperty(_redFlag, "test"); 
replyMessage.Update(ConflictResolutionMode.AlwaysOverwrite); 
replyMessage.SendAndSaveCopy(); 
Смежные вопросы