2017-01-06 7 views
0

저는 패러데이를 사용 중이며 인증 된 계정에서 메시지를 가져올 수있는 설정을 가지고 있습니다. 들어오는 메시지를 잡는 데 아무 문제가 없지만 보낸 메시지를 가져 가면 계정에서 메시지를 보냈 음을 알 때 빈 응답이 표시됩니다.Office365 API v2로 인증 된 계정에서 보낸 전자 메일을 검색하려면 어떻게합니까?

기본적으로 내가 필요한 것은 사용자가 보낸 목록 전자 메일을 검색하는 것입니다.

from_conn = Faraday.new(:url => "https://outlook.office.com") do |faraday| 
    faraday.response :logger 
    faraday.adapter Faraday.default_adapter 
    end 

# Then from: 
from_response = from_conn.get do |request| 
    request.url "/api/v2.0/Me/Messages?$search=%22from:#{user_email}%22&$select=SentDateTime,ToRecipients,From,Subject,Body" 
    request.headers['Authorization'] = "Bearer #{token['token']}" 
    request.headers['Accept'] = 'application/json' 
    request.headers['X-AnchorMailbox'] = user_email 
end 

을 그리고 여기에 구문 분석 응답 본문입니다 :

는 여기에 내가 뭘하는지의

[ 
    [0] { 
    "@odata.context" => "https://outlook.office.com/api/v2.0/$metadata#Me/Messages(SentDateTime,ToRecipients,From,Subject,Body)", 
      "value" => [] 
    } 
] 

그것은 요청 https://outlook.office.com/api/v2.0/Me/Messages?%24search=%22from%3Adr_dickdorkins%40outlook.com%22&%24select=SentDateTime%2CToRecipients%2CFrom%2CSubject%2CBody의 URI를 생성합니다.

내가과 같이 폴더 SentItems에서 검색을 시도했다 :

[0] { 
    "error" => { 
      "code" => "RequestBroker-ParseUri", 
     "message" => "Resource not found for the segment 'Folders'." 
    } 
} 

난 정말 모르겠어요 :

request.url "/api/v2.0/Me/Folders/SentItems$search=%22sender:#{user_email}%22" 

하지만 폴더를 검색하는 생각 어떤 순열이 오류를 얻을 수 어떤 다른 시도 - 어떤 도움을 주시면 감사하겠습니다!

답변

1

문서의 경우 마지막 시도에서 폴더를 지정하는 데 적합한 URL 형식이 아닌 것 같습니다. https://msdn.microsoft.com/en-us/office/office365/api/mail-rest-operations#get-a-message-collection-rest에서 발췌 :

GET https://outlook.office.com/api/v2.0/me/MailFolders/{folder_id}/messages 

folder_id - string - The folder ID, or the Inbox, Drafts, SentItems, or DeletedItems well-known folder name, if you're getting messages from a specific folder. Specifying AllItems would return all messages from the entire mailbox

당신은이 URL을 변경하려고한다 : 또한

https://outlook.office.com/api/v2.0/me/MailFolders/SentItems/messages/?$select=SentDateTime,ToRecipients,From,Subject,Body 

전에 (이 MailFolders에게 대신 폴더 자원 이름을 기대하는 것처럼 보입니다) faraday에 의해 만들어진 요청에 문제가 없다고 판단한 경우 API가 무엇을 반환하는지 확인해야합니다. , curl 또는 some o ther REST 클라이언트를 사용하면 헤더를 설정 한 다음 해당 설정을 사물의 레일 측면으로 가져올 수 있습니다.

+0

그게 전부 야! 사실 SO 패션에서 나는 질문을 올린 후 솔루션을 게시하려고했던 때와 동일한 솔루션을 발견했습니다. 당신은 확실히 맞습니다, 그것은 문서에 모두 있습니다, 나는 더 열심히보아야 만했습니다. – octopushugs

+1

그런 일이 일어난다. 나는 어떤 사람들은 몇 년 전만해도 ... 같은 질문을 찾기 위해 질문을 게시했다고 주장했다고 ​​생각한다. 건배! – mlabarca