Я перестраиваю систему на основе EWS для использования API-интерфейса REST Microsoft Graph, и у меня возникают проблемы с репликацией функции Reply Email , как это было в реализации EWS.
В EWS я бы создал ReplyToItemType
, укажите исходный адрес электронной почты и прикрепил NewBodyContent
примерно так:
$reply = new ReplyToItemType();
$reply->ReferenceItemId = new ItemIdType();
$reply->ReferenceItemId->Id = $this->message->ItemId->Id;
$reply->ReferenceItemId->ChangeKey = $this->message->ItemId->ChangeKey;
$reply->NewBodyContent = new BodyType();
$reply->NewBodyContent->BodyType = BodyTypeType::HTML;
$reply->NewBodyContent->_ = $this->body;
Это создаст новое сообщение с содержимым предыдущего письма, уже прикрепленным и установившим тему (т. е. "RE: original subject"
)
С MSGraph я не могу повторить эту функцию ...
Я использую конечную точку POST /users/{id | userPrincipalName}/messages/{id}/reply
(поэтому в сообщении указывается сообщение для ответа):
$this->graph = new Graph();
$this->graph->setAccessToken($token);
$graphRequest = $this->graph->createRequest(
'POST', '/users/' . $mailbox . '/messages/' . $exchange_id . '/reply'
);
$graphRequest->attachBody($body)->execute();
Тело запроса $body
выглядит следующим образом:
array:1 [
"Message" => array:6 [
"sender" => array:1 [
"emailAddress" => array:1 [
"address" => "sender@domain.co.uk"
]
]
"toRecipients" => array:1 [
0 => array:1 [
"emailAddress" => array:1 [
"address" => "recipient@domain.co.uk"
]
]
]
"ccRecipients" => []
"attachments" => []
"body" => array:2 [
"contentType" => "html"
"content" => "<p>Test</p>"
]
"subject" => "null"
]
]
Но при этом отправляется электронное письмо с темой "null" и содержимым:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body>
<p>test</p>
</body>
</html>
Есть ли способ репликации функций EWS, как указано выше, без необходимости вложения предыдущего содержимого электронной почты а тему вручную?