У меня есть программа на Java, использующая API Gmail, которая аутентифицируется в нашей G Suite через OAuth 2.0, загружает все вложения для сообщений в почтовый ящик определенного пользователя и обрабатывает указанные вложения.
Я испытываю очень специфическую проблему, когда для некоторых сообщений, отправляемых с определенных факсимильных серверов, которые перенаправляются на учетную запись, где поле «to:» адресовано чему-то другому, чем сама учетная запись, с использованием
service.users().messages().get(userID, messageID).execute();
не получит эти вложения. Это даже верно, если я использую универсальный идентификатор «я».
Если я перешлю сообщение себе и поле «to:» изменится, программа сможет его обработать, но не в том случае, если оно адресовано кому-то другому. Это проблема, потому что эти сообщения адресованы электронной почте, которая находится за пределами нашего домена G Suite. Я перепробовал все методы пересылки и фильтрации в Gmail, в том числе переадресацию другому провайдеру, например Yahoo, но автоматическая пересылка не изменяет поле «to:» / deliveryto: в исходном письме и, таким образом, вызывает ту же проблему.
Я пытался использовать другой метод аутентификации, где я пытался использовать служебную учетную запись для делегирования всего домена с полной областью Gmail, как указано здесь Делегирование всего домена Gmail API и следуя точному шаги, описанные в документации Google.
Проблема в том, что даже когда я использую делегирование по всему домену и указываю setServiceAccountUser в качестве пользователя факса из поля «to:», оно говорит, что это недопустимый пользователь, что имеет смысл, поскольку это не пользователь Gmail или пользователь в нашем домене, он пересылается из внешнего источника, который мы не можем контролировать.
Я попытался создать программу, которая вручную перенаправляет эти электронные письма обратно на эту учетную запись платформы, но я сталкиваюсь с теми же проблемами, что и метод service.users (). Messages (). Get (userID, messageID), требующий userID и messageID.
Message message = service.users().messages().get("xxxxxxxxx@faxmail.vonage.com", messageID).execute();
Выше выделен фрагмент кода, в котором метод .get () не позволяет программе получать вложения для этого внешнего пользователя, что, по-видимому, напрямую определяется полем «to:» в электронном письме - если я перешлю это письмо самому себе, и «to:» изменится для моего пользователя, оно сразу же сможет получить вложение.
Когда я пытался делегировать по всему домену с учетной записью службы или изменять идентификатор пользователя в подробном методе на адрес faxmail.vonage.com, это приводило бы к ошибке 403 или 400 - либо жалоба пользователя не существует, или говоря: «Отказано в делегировании для platform@xxxxxx.com»