2014-12-10 1 views
1

Как настроить заголовок ответа при отправке сообщения с помощью управляемых API веб-служб Exchange в Powershell v3?Как установить сообщение Ответ на адрес с помощью EWS Managed API?

У меня есть объект Microsoft.Exchange.WebServices.Data.EmailMessage и вы можете установить адрес, добавить вложения и отправить почту успешно.

я был в состоянии добавить X-заголовок с помощью:

$xheader = new-object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition([Microsoft.Exchange.WebServices.Data.DefaultExtendedPropertySet]::InternetHeaders,"x-my-header",[Microsoft.Exchange.WebServices.Data.MapiPropertyType]::String) 

и добавить его в $ pspropset, но если я использую для ответа в качестве значения заголовка не вставлена.

Используя ценный и трудно найти информацию, размещенную на Glen Весы в this thread Я считаю, что две расширенные свойства, PidTagReplyRecipientEntries и PidTagReplyRecipientNames должны быть установлены на объекте EmailMessage.

Я могу установить как расширенные свойства без ошибок, но это не приводит к заголовку ответа-ответа в сообщении.

Соответствующий код ниже:

function SendResponse($orgMsg, $bodyTxt){ 
$message = [Microsoft.Exchange.WebServices.Data.EmailMessage]::Bind($service, $($orgMsg.Id), $psPropset) 
$reply = $message.CreateReply($true) 
$reply.BodyPrefix = $bodyTxt 
$replyMsg = $reply.Save($drftFolderid.Id) 
$replyMsg.From = "[email protected]" 
$replyMsg.SetExtendedProperty($PidTagReplyRecipientEntries, $byteVal) 
$replyMsg.SetExtendedProperty($PidTagReplyRecipientNames, "[email protected]") 
$replyMsg.Update([Microsoft.Exchange.WebServices.Data.ConflictResolutionMode]::AlwaysOverwrite) 
$replyMsg.SendAndSaveCopy($sentFolderid.Id) 
} 

function convert-fromhex { 
    process 
    { 
     $_ -replace '^0x', '' -split "(?<=\G\w{2})(?=\w{2})" | %{ [Convert]::ToByte($_, 16) } 
    } 
} 

# below is hex of string "[email protected]" 
[Byte[]]$byteVal = "6d795f646573697265645f7265706c79746f406578616d706c652e636f6d" | convert-fromhex 

$PidTagReplyRecipientEntries = new-object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition(0x004F,[Microsoft.Exchange.WebServices.Data.MapiPropertyType]::Binary) 
$PidTagReplyRecipientNames = new-object Microsoft.Exchange.WebServices.Data.ExtendedPropertyDefinition(0x0050,[Microsoft.Exchange.WebServices.Data.MapiPropertyType]::String) 
$psPropset = new-object Microsoft.Exchange.WebServices.Data.PropertySet([Microsoft.Exchange.WebServices.Data.BasePropertySet]::FirstClassProperties) 
$psPropset.Add($PidTagReplyRecipientEntries) 
$psPropset.Add($PidTagReplyRecipientNames) 

Кто-нибудь знает, как это может быть достигнуто?

+0

Любое понимание того, почему этот вопрос был проголосован, также оценивается. – runaboutfence

+0

У меня такая же проблема, когда я хочу, чтобы ответ на адрес был списком рассылки Exchange, поэтому я не могу использовать олицетворение, какую-нибудь удачу? – Aaron

ответ

0

Нет подсказки, почему вы были опущены, но, как представляется, an EmailMessage.ReplyTo property в классе Microsoft.Exchange.WebServices.Data.EmailMessage. Однако я не могу сказать, доступно ли это только для чтения. Похоже, может быть.

+0

Thanks for the reply and vote! Свойство «EmailMessage.ReplyTo» в классе EmailMessage доступно только для чтения. Я думаю, что это свойство задается поставщиком транспорта Exchange, когда расширенные свойства 'PidTagReplyRecipientEntries' и' PidTagReplyRecipientNames' правильно настроены. – runaboutfence

0

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

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