2017-04-10 1 views
0

아래 코드를 사용하여 메일 함을 볼 수 있습니다. 위에서 보듯이 lableIds에는 새 메시지 만 듣기 때문에 INBOX라는 레이블 하나만 있습니다. 그러나, 이걸 실행할 때마다 30 분마다 또는 다른 messageid를 사용하여 알림을받습니다. 그러나 INBOX에서는 변경이 발생하지 않았으며 새 항목이 추가/제거되지 않았습니다. 수신되는 메시지에 대해서만 수신함을 들으려면 시계 본체를 어떻게 설정해야합니까?Gmail API :받은 편지함보기 전용

certificate= new X509Certificate2("file.p12"), "password",  
X509KeyStorageFlags.Exportable); 
credential = new ServiceAccountCredential(
        new ServiceAccountCredential.Initializer(serviceaccount) 
        { 
         User = username,//username being impersonated 
         Scopes = scopes 
        }.FromCertificate(certificate)); 
var service = new GmailService(new BaseClientService.Initializer() 
    { 
     HttpClientInitializer = credential, 
     ApplicationName = applicationame, 
    }); 


WatchRequest body = new WatchRequest() 
{ 
    TopicName = "projects/projectid/topics/topicname", 
    LabelIds = new[] {"INBOX"} 
} 
string userId = "me"; 
UsersResource.WatchRequest watchRequest = service.Users.Watch(body, userId); 
WatchResponse test = watchRequest.Execute(); 
+0

서비스 계정을 사용하고있는 것 같습니다. Google Identity Platform https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority의 공식 문서에서 설명한대로 사용자를 가장합니까? – Morfinismo

+0

@Morfinismo 가장 된 사용자의 ID에서 내가 전달하는 부분을 강조 표시하는 코드를 편집했습니다. 내 서비스 계정에 도메인 전체 권한을 부여했습니다. – jpo

답변

1

Gmail은 요청한 필터 데이터를 분명히 무시합니다. 이것은 gmail 내부의 알려진 버그 인 것 같습니다. 체크 아웃 https://issuetracker.google.com/issues/37300052 꽤 조용한 것 같지만 진행 상황을 모니터링합니다. 적어도 반복되는 버그 리포트를 작성하는 것이 좋습니다.

내 경우에는 특정 맞춤 라벨이있는 이메일 만 찾고 있습니다. 해당 사용자의 기록 ID를 저장할 수 있습니다 (https://developers.google.com/gmail/api/v1/reference/users/history/list 참조).이시기는 1 분마다 gmail API 만 호출하면됩니다. 이렇게하면 gmail에 걸려는 전화 수가 줄어들지 만 완벽하지는 않습니다.