2017-10-12 3 views
3

Gmail API PHP 라이브러리를 통해 모든 메시지를 가져 오는 데 문제가 있습니다. listUsersThreads을 사용하여 모든 스레드를 검색하여 사용자 계정에서 전체 또는 부분 사서함 동기화를 수행합니다. 초기 전체 동기화가 처리하고 필요한 메시지 ID를 반환 한 다음 메일 메타 헤더 (from, to, date, subject)를 저장하는 데 사용합니다. 마지막 히스토리 ID에서 listUserHistory을 사용하여 이후에 전화를 걸면 부분 동기화를 수행하여 최신 메시지 만 검색 할 수 있습니다. 저장 한 데이터에서 두 사람 사이에 전체 메시지 대화 로그를 표시하고 날짜순으로 대화를 표시합니다. 메시지를 클릭하면 API에 쿼리하여 이메일 본문을 검색 한 다음 표시합니다.Gmail API 누락 된 메시지

문제는 내가 저장 한 메시지를 기반으로 MIME 콘텐츠를 보면 MIME 본문에 데이터베이스에없는 메시지가 있다는 것입니다. 그런 다음 검색 쿼리를 사용하여 API에 쿼리를 시도했지만 여전히 API에서 누락 된 메시지가 누락되었습니다.

이전 개발자가 mimecast를 사용하여 메시지를 가져오고 해당 데이터베이스를 쿼리하면 실제로 누락 된 메시지가 반환됩니다.

Google Gmail API로 발신자와 수신자간에 모든 메시지가 전송되지 않는 이유는 무엇입니까? MIME 본문에는 API를 쿼리 할 때 사용할 수없는 메시지가 명확하게 표시되며 이유 또는 누락 된 메시지를 찾는 방법을 알지 못합니다.

도움을 주시면 감사하겠습니다.

답변

1

그래서이 문제가 다른 사람에게 발생하는 경우 만료 된 기록 항목과 관련이 있다고 생각합니다. 필자는 2 주 이상 실행 한 후에 만 ​​증명 될 수 있기 때문에이를 바로 잡을 수 있습니다.

편지함 동기화를 실행하려는 경우 특히 메시지가받은 편지함이나 Gmail 이외의 클라이언트에서 전송 된 경우 메시지가 누락 될 가능성이 있습니다. 기록 항목은 평균 2 주간 보관되므로 사서함을 동기화하면 계정이 활성화 된 시점부터 모든 항목을 동기화하지만 만료 된 기록 항목은 사용할 수 없습니다.

이론적으로 이것은 부분 동기화가 실행되는 동안 전체 전자 메일 대화가 있어야 함을 의미합니다. 나처럼 나에게 Google 클라우드 서비스 콘솔을 통해 푸시 알림을 사용하도록 설정하면 주어진 계정에서 부분 동기화 프로세스를 실행하도록 시스템에 알리면 통신에 필요한 모든 MIME 헤더가 있어야합니다.

푸시 알림 대신 수동으로 부분 동기화를 수행하거나 일정 기간 동안 CRON을 사용하는 경우 모든 기록 항목을 계속 사용할 수 있고 동기화 할 수 있도록 간격을 구성해야합니다.

그러나 단점은 메시지 ID로 모든 통신 내용을 추적하더라도 전자 메일 본문을 검색하기 위해 만료 된 메시지를 조회하면 404 상태 코드와 함께 실패하므로 일부 메시지의 이메일 본문 내용을 검색 할 수 있습니다.

따라서 프로세스가 전자 메일의 내용에 크게 의존하는 경우 부분 동기화 중에 본문 내용을 로컬에 저장해야합니다. 필요할 때 메시지 내용을 조회하지만 실제로는 MIME 헤더 만 필요합니다. 주어진 메시지 본문을 검색 할 수 없으면 큰 문제가되지 않습니다.

지금부터 한 달 안에이 이론을 확인할 수 있어야합니다. 내 이론이 올바르지 않다고 생각한다면 자유롭게 나를 현명하게 생각해보십시오. :)

관련 문제