Outlook Rest Api отправка почты Запрос вернулся статус 400

Я пытаюсь отправить письмо с подписанной учетной записи Outlook с Outlook Rest Api и Curl, затем я получаю эту ошибку

Request returned status 400

Это мой код для отправки почты

private static $outlookApiUrl = "https://outlook.office.com/api/v2.0";

public static function sendMail ($access_token,$user_email,$subject,$Content,$email){

$arr= array(
"Message" =>array(
'Subject' => $subject,
"Body"=>array(
"Content-Type"=>"HTML",
"Content"=>$Content,
),
"ToRecipients"=>array(
array(
"EmailAddress"=>array(
"Address"=>$email,
)
),
),
));

$json=json_encode($arr, true);

$getMessagesUrl = self::$outlookApiUrl."/me/sendmail";return self::makeApiCall($access_token, $user_email, "POST",$getMessageUrl,$json);

}

и это код для CURL

public static function makeApiCall($access_token, $user_email, $method, $url, $payload = NULL) {
// Generate the list of headers to always send.
$headers = array(
"User-Agent: php-tutorial/1.0",
"Authorization: Bearer ".$access_token,
"Accept: application/json",
"client-request-id: ".self::makeGuid(),
"return-client-request-id: true",
"X-AnchorMailbox: ".$user_email
);

$curl = curl_init($url);

switch(strtoupper($method)) {
case "POST":
error_log("Doing POST");
$headers[] = "Content-Type: application/json";
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
break;
default:
error_log("INVALID METHOD: ".$method);
exit;
}

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($curl);
error_log("curl_exec done.");

$curl_errno = curl_errno($curl);
$curl_err = curl_error($curl);
if ($curl_errno) {
//PRINT ERROR
}
else {
error_log("Response: ".$response);
curl_close($curl);
return json_decode($response, true);
}
}

Затем я вызываю метод sendMail на домашней странице

  $send=OutlookService::sendMail($_SESSION["access_token"], $_SESSION["user_email"],"testing","<html><body>testing email.</body></html>","[email protected]");

echo var_dump($send);

Могу ли я узнать, что не так с моим кодом? и почему я получаю эту ошибку?

1

Решение

Свойство «Content-Type» не существует для типа «Microsoft.OutlookServices.ItemBody», оно должно быть «ContentType». Пожалуйста, обратитесь к этому документу для деталей:
https://msdn.microsoft.com/office/office365/api/complex-types-for-mail-contacts-calendar#ItemBody

Кроме того, вам нужно разрешение «отправлять почту как пользователь» для O365 Exchange Online в Azure AD, если вы хотите отправить почтовое сообщение с помощью REST API. Вы также можете обратиться к статье ниже для более подробной информации:
https://dev.outlook.com/restapi/tutorial/php

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]