Как отправить почту с помощью Office365 REST API? - PullRequest
0 голосов
/ 09 декабря 2018

Я работаю с Office365 REST API.У меня проблема с отправкой электронной почты.Я не могу найти никакой помощи в основном php.

Я могу получить доступ к почте и вложениям, но не могу отправить письмо.Вот что я пробовал до сих пор.

// SEND MAIL FUNCTION

if(isset($_GET['send_email'])){
$resuu = "okay";
$resuu = SendMail();
echo $resuu;

}
function SendMail(){

$userID = get_user_id();

$headers = array(
                            "User-Agent: php-tutorial/1.0",         
                            "Authorization: Bearer ".token()->access_token, 
                            "Accept: application/json",             
                            "client-request-id: ".makeGuid(), 
                            "return-client-request-id: true", 
                            "X-AnchorMailbox: ". get_user_email()
);
$newmail = '{
"Message": {
  "Subject": "Sending 1st email dont fails plz?",
  "Body": {
  "ContentType": "Text",
  "Content": "The new cafeteria is open."
   },
 "ToRecipients": [
   {
      "EmailAddress": {
         "Address": "chxanu123@gmail.com"
       }
     }
    ]
   },
  "SaveToSentItems": "true"
}';
    $outlookApiUrl = $_SESSION["api_url"] . "/Users('$userID')/sendmail";
    $response = runCurl($outlookApiUrl, $newmail, $headers);
    return $response;
    //Session[api_url] contains $_SESSION["api_url"] = //"https://outlook.office.com/api/v2.0";
    }

 ?>

Вот метод запуска curl, который я использовал для доступа к почте

<code>function runCurl($url, $post = null, $headers = null) {
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_POST, $post == null ? 0 : 1);
 if($post != null) {
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
 }
 curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  if($headers != null) {
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 }
 $response = curl_exec($ch);
 $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
 curl_close($ch);
 if($http_code >= 400) {
     echo "Error executing request to Office365 api with error 
 code=$http_code<br/><br/>\n\n";
     //echo "<pre>"; print_r($response); echo "
"; die ();} return $ response;}

1 Ответ

0 голосов
/ 10 декабря 2018

Какую ошибку вы получаете?Есть ли у вас заголовки HTTP-ответов или происходит сбой до того, как он выйдет из вашего ящика?

Одна вещь с REST - нет необходимости в X-AnchorMailbox.Это концепция EWS.Целевой почтовый ящик всегда находится в URL, и наши серверы переднего плана будут игнорировать то, что вы указали в заголовке X-AnchorMailbox для REST API.Но это не будет причиной вашей неудачи.

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