Предоставление ExtendedProperty для ReplyAllToItem - PullRequest
0 голосов
/ 22 января 2019

При ответе на электронное письмо запрос на отправку происходит асинхронно, что означает, что идентификатор сообщения не возвращается в ответе.

Согласно Microsoft решение состоит в том, чтобы добавить ExtendedProperty к сообщению, чтобы действовать в качестве уникального идентификатора, который впоследствии можно будет использовать для поиска вновь отправленного электронного письма с помощью Restriction в FindItem .

Мне удалось сделать это при отправке обычной электронной почты, как показано ниже:

<ns2:CreateItem MessageDisposition="SendAndSaveCopy">
    <ns2:SavedItemFolderId>
        <ns1:DistinguishedFolderId Id="sentitems"/>
    </ns2:SavedItemFolderId>
    <ns2:Items>
        <ns1:Message>
            <ns1:ItemClass>IPM.Note</ns1:ItemClass>
            <ns1:Subject>Test create item</ns1:Subject>
            <ns1:Body BodyType="Text">And here is the body</ns1:Body>
            <ns1:ExtendedProperty>
                <ns1:ExtendedFieldURI 
                     PropertyName="CustomId" 
                     PropertySetId="SOME SET ID" 
                     PropertyType="String"
                />
                <ns1:Value>UNIQUE ID</ns1:Value>
            </ns1:ExtendedProperty>
            <ns1:ToRecipients>
                <ns1:Mailbox>
                    <ns1:EmailAddress>my@email.com</ns1:EmailAddress>
                </ns1:Mailbox>
            </ns1:ToRecipients>
        </ns1:Message>
    </ns2:Items>
</ns2:CreateItem>

Проблема в том, что при попытке добавить ExtendedProperty к Message, содержащемуся в ReplyAllToItem, поле не включается в запрос.

<ns2:CreateItem MessageDisposition="SaveOnly">
    <ns2:SavedItemFolderId>
        <ns1:DistinguishedFolderId Id="sentitems"/>
    </ns2:SavedItemFolderId>
    <ns2:Items>
        <ns1:ReplyAllToItem>
            <ns1:Subject>Subject</ns1:Subject>
            <ns1:ToRecipients>
                <ns1:Mailbox>
                    <ns1:EmailAddress>my@email.com</ns1:EmailAddress>
                </ns1:Mailbox>
            </ns1:ToRecipients>
            <ns1:CcRecipients/>
            <ns1:ReferenceItemId ChangeKey="CQ=" Id="AA="/>
                <ns1:NewBodyContent BodyType="HTML">Body</ns1:NewBodyContent>
            </ns1:ReplyAllToItem>
        </ns2:Items>
    </ns2:CreateItem>

Кстати, я использую php-ews для сборки запросов.

1 Ответ

0 голосов
/ 23 января 2019

Я не верю, что базовые типы для этой операции позволяют вам добавить свойство Extended. В качестве простого обходного пути для этого нужно сначала сохранить сообщение в папке черновиков

      <m:CreateItem MessageDisposition="SaveOnly">
    <m:SavedItemFolderId>
      <t:DistinguishedFolderId Id="drafts" />
    </m:SavedItemFolderId>
    <m:Items>
      <t:ReplyAllToItem>
        <t:ReferenceItemId Id="AAMkADczN..." ChangeKey="CQAA..." />
      </t:ReplyAllToItem>
    </m:Items>
  </m:CreateItem>

Затем вам будет возвращен ItemId в базовый EmailMessage, созданный ReplyToAllToItem, затем вы можете просто использовать обычный запрос updateItem для этого электронного письма и затем отправить его с помощью операции SendItem. Еще несколько запросов, но все должно работать нормально.

...