Intereting Posts
Как найти первый неповторяющийся символ из строки? ссылка на подтверждение по электронной почте Установка и включение Xdebug на MAMP PRO Проблема создания лучшего случайного алгоритма – ежедневный спред Разрешать только URL-адреса, указанные в маршрутах, в Codeigniter Пользователь не распознается через Parse \ ParseUser, но существует в $ _SESSION Получить значения stdClass Object PHP Позвольте пользователям создавать свои собственные настраиваемые параметры меню, сохраняя при этом значения по умолчанию для приложений Как конвертировать дату в timestamp, добавить 6 часов и преобразовать его обратно в дату на PHP? PHP – Встраивание сгенерированного изображения из внешнего файла в электронную почту HTML Кнопка «Назад» PHP и браузера – что действительно происходит Список всех путей многомерного массива Memcache подключается, но не отвечает на любую команду php включает сгенерированный png в pdf через fpdf Недопустимый синтаксический анализ JSON с использованием PHP

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); } } 

THEN Я вызываю метод sendMail на главной странице

  $send=OutlookService::sendMail($_SESSION["access_token"], $_SESSION["user_email"],"testing","<html><body>testing email.</body></html>","example@gmail.com"); echo var_dump($send); 

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

    Свойство «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