Как получить вложения в Gmail для перенаправленных сообщений, адресованных внешнему пользователю? - PullRequest
1 голос
/ 19 июня 2019

У меня есть программа на 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»

1 Ответ

1 голос
/ 20 июня 2019

Если вы используете G Suite, вы можете использовать Правила пересылки на панели управления, чтобы отправлять все электронные письма, приходящие на этот адрес, в любое время.

edit:

С помощью правил соответствия содержимого на панели администратора G Suite вы можете настроить информацию о конверте, позволяя изменить поле «to».

...