Вложение сообщения, отправленное office365, остальные api не отображаются во входящих

Я использую office 365 rest api и отправляю вложение, когда я отправляю вложение на любой адрес электронной почты, кроме почты office 365, такой как (gmail.com, yahoo.com и т. Д.), А затем вложение, видимое во входящей почте, но в случае office 365 отправляйте его по почте показывая только контент.

Спасибо Шанкар

1 ответ

Решение

Я могу отправить вложение как в офис 365, так и в Yahoo, Gmail и т. Д., Используя остальные API Office 365.

Вложение массива нужно создать следующим образом

     <?php
      $k=0;
         $attchmentArr=array();
        foreach($requestjson['name'] as $file){
                $attchmentArr[]=array(
                     "@odata.type"=> "#Microsoft.OutlookServices.FileAttachment",
                    "Name"=> $file,
                    "ContentBytes"=> $requestjson['content_bytes'][$k],
                );
          $k++;  
        }
?>

Вам нужно создать массив, как показано ниже.

<?php
 $post_data=array(
             "Message"=>array(
                 "Subject"=>$requestjson['subject'],
                 "Body"=>array(
                     'ContentType'=>'HTML',
                     'Content'=> $requestjson['message'],
                 ),
                 "From"=>array(
                     "EmailAddress"=>array(
                         'Name'=>$fromName[0],
                         'Address'=>CARE_ACOCUNT
                     )
                 ),
                "ToRecipients"=>array(
                      array(
                          "EmailAddress"=>array(
                                        'Name'=>$toName[0],
                                        "Address"=>$requestjson['to_address']
                                    )
                            )
                  ),
                  "Attachments"=>$attchmentArr,
             ),
            "SaveToSentItems"=> "true"
         );
?>

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

<?php
$url="https://outlook.office365.com/api/beta/me/sendmail";
  $post_data = json_encode($post_data);
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL,$url);
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
            curl_setopt($ch, CURLOPT_USERPWD, CARE_ACOCUNT . ':' . CARE_PASS);
            curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $post_header);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);          

            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            $response = curl_exec($ch);
            $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            $response = json_decode($response, true);  

            $status_arr=array(200,201,202,204);           
            curl_close($ch);
            if(in_array($status,$status_arr)){
                return $response;
            } else {
                return 'error';
            }
Другие вопросы по тегам