Вложение сообщения, отправленное 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';
}