вложение файла с использованием графа microsoft отправить почту не работает

Получение почты без вложения Я использую sendMail от Microsoft Graph. Мне нужно одновременно добавить вложение. Я добавил объект вложения в сообщение тела запроса. Но получил почту без вложения. я был следующим: https://docs.microsoft.com/en-us/graph/api/resources/fileattachment?view=graph-rest-1.0 PFB мой код.

function sendAttachment(accessToken) {
  const attachments = [
    {
      "@odata.type": "#microsoft.graph.fileAttachment",
      "contentBytes": "",
      "name": "example.jpg"
    }
  ];
  var message= 
      { subject: 'It\'s working ',
        body: 
         { contentType: 'Text',
           content: 'Sending mail using microsoft graph and Outh2.0' },
        toRecipients: [ { emailAddress: { address: '' } } ],
        ccRecipients: [ { emailAddress: { address: '' } } ] 
      };

  message["attachments"] = attachments;

  var options = { 
  method: 'POST',
  url: 'https://graph.microsoft.com/v1.0/users/[email protected]/sendMail',
  headers: 
   { 'Cache-Control': 'no-cache',
     Authorization: 'Bearer '+ accessToken,
     'Content-Type': 'application/json' },
  body:JSON.stringify({
      "message": message, 
      "SaveToSentItems": "false"
    }),
  json: true
   };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log("--attachment--");
});
}

что мне здесь не хватает ??


person yash dogra    schedule 20.11.2019    source источник


Ответы (1)


Скорее всего, это происходит из-за недопустимого запроса полезной нагрузки из request документации

body - тело сущности для запросов PATCH, POST и PUT. Должен быть Buffer, String или ReadStream. Если json истинно, то тело должно быть сериализуемым объектом JSON.

Таким образом, любой параметр json следует опустить:

const options = {
    method: "POST",
    url: `https://graph.microsoft.com/v1.0/users/${from}/sendMail`,
    headers: {
      "Cache-Control": "no-cache",
      Authorization: "Bearer " + accessToken,
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      message: message,
      SaveToSentItems: "true"
    })
  };

или json установлено в true, но body указано как JSON объект:

const options = {
    method: "POST",
    url: `https://graph.microsoft.com/v1.0/users/${from}/sendMail`,
    headers: {
      "Cache-Control": "no-cache",
      Authorization: "Bearer " + accessToken,
      "Content-Type": "application/json"
    },
    body: {
      message: message,
      SaveToSentItems: "true"
    },
    json: true
  };
person Vadim Gremyachev    schedule 20.11.2019