Создание ответа по электронной почте через MSGraph PHP SDK - PullRequest
1 голос
/ 05 марта 2020

Я перестраиваю систему на основе 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, как указано выше, без необходимости вложения предыдущего содержимого электронной почты а тему вручную?

1 Ответ

1 голос
/ 06 марта 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...