我有一个使用Gmail API的Java程序,该程序可通过OAuth 2.0通过我们的G Suite进行身份验证,下载特定用户收件箱中邮件的所有附件,并处理所述附件。
我遇到了一个非常具体的问题,对于某些传真服务器发送的某些邮件,这些邮件正被转发到该帐户,其中“收件人:”字段使用
寻址到该帐户本身以外的其他地址。service.users().messages().get(userID, messageID).execute();
将不会检索这些附件。如果我使用通用的“我”标识符,这甚至是事实。
如果我将消息转发给自己,并且“收件人:”字段发生更改,则程序可以继续使用它,但是如果将其发送给其他人则不能。这是一个问题,因为这些邮件已发送到我们G Suite域之外的电子邮件中。我已经尝试了Gmail中所有转发和过滤方法,包括转发到Yahoo这样的其他提供商,但是自动转发不会更改原始电子邮件中的“ to:” / deliveredto:字段,因此会导致相同的问题。
我尝试使用另一种身份验证方法,其中尝试使用服务帐户进行具有完整Gmail范围的域范围委派,如此处Gmail API domain-wide delegation所述,并遵循Google文档概述的确切步骤。
问题是,即使我使用域范围的委派并从“至:”字段中将setServiceAccountUser指定为传真用户,它也表示该用户不是有效用户,因为这不是Gmail用户,所以这是有道理的或我们域内的用户,它是从我们无法控制的外部来源转发的。
我尝试构建一个程序,将这些电子邮件手动转发回该平台帐户,但是遇到与service.users()。messages()。get(userID,messageID)方法需要用户ID相同的问题和messageID。
Message message = service.users().messages().get("xxxxxxxxx@faxmail.vonage.com", messageID).execute();
以上是我所隔离的代码部分,.get()方法不允许程序获取该外部用户的附件,这似乎直接由电子邮件中的“ to:”字段定义-如果我将此电子邮件转发给我自己,并且“收件人:”更改发送给我的用户,则它可以立即获取附件。
当我尝试使用服务帐户进行域范围的委派或将详细方法中的userID更改为Faxmail.vonage.com地址时,会出现403或400错误-抱怨用户不存在,或说“平台@ xxxxxx.com的授权被拒绝”
答案 0 :(得分:1)
如果您使用的是G Suite,则可以随时使用控制面板中的Forwarding rules将到达该地址的所有电子邮件发送给您。
编辑:
使用G Suite管理面板上的content compliance rules,您可以调整信封信息,从而可以更改“至”字段。