回复电子邮件时,发送请求是异步发生的,这意味着响应中不会返回消息 ID。
根据微软的说法,解决方案是在消息中添加一个ExtendedProperty
作为唯一 ID,以后可以使用它来查找新发送的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 来构建请求。