2017-04-04 17 views
0

파이썬 코드에서 Outlook의 REST API를 사용하여 이미 동의 한 사용자를 대신하여 전자 메일을 보내려고합니다. Outlook API 전자 메일 첨부 문제

내가 성공적으로 다음과 같은 페이로드와 함께 자신의/ME/센드 메일 노드를 사용하여 텍스트 이메일을 보낼 수 있었다 그러나

email_payload = { 
     "Message": { 
      "Subject": email_subject, 
      "Body": { 
       "ContentType": "Text", 
       "Content": email_body 
      }, 
      "ToRecipients": [ 
       { 
        "EmailAddress": { 
         "Address": to 
        } 
       } 
      ] 
     } 
    } 

첨부 파일을 추가 할 때, (자신의 문서 기준), 나는 몇 가지 문제가 발생할 수 :

 email_payload["Message"]["Attachments"] = [ 
      { 
       "ContentType": "application/pdf", 
       "Name": "{0}".format("something.pdf"), 
       "ContentBytes": base64.b64encode(attachment.read()) 
      } 
     ] 

문제는 다음과 같은 내용으로 415 응답 상태 코드로 구성됩니다 {u'error ': {u'message를'u'A 없거나 메시지를 읽으려고 할 때 빈 콘텐츠 형식 헤더가 발견되었다. 콘텐츠 유형 헤더가 필요합니다. ', u'code': u'RequestBodyRead '}}

관련 문서에서 관련 내용을 찾을 수 없습니다. 누군가가 나 : 다른 사람 가지고 이러한 문제에 대한

답변

0

, 여기에 컨텍스트 및 수정의 계몽 수 있기를 바랍니다 : 만 일반 텍스트 이메일을 보내는 이후,

처음 내 요청 헤더는 다음과 같이 보았다 :

request_headers = { 
    'Authorization': "Bearer {0}".format(token), 
} 

그리고 실제 요청 : 당신은 내가 (왜 확실하지) 내 헤더의 모든 콘텐츠 유형을 전송하지 않은 눈치 챘을 수도 있지만, 모든 것이 잘 갔다으로

api_response = requests.post(
     request_url, 
     json.dumps(body), 
     headers=request_headers 
    ) 

내가 첨부 파일을 추가하기로 결정할 때까지는 멀리까지. 내 request_headers도 콘텐츠 형식을 포함한다면, 모든 것이 잘 갈 것 같은

이 보인다 :

request_headers = { 
      'Authorization': 'Bearer {0}'.format(refreshed_token), 
      'Content-Type': 'application/json' 
     }