下载/上传 Gmail 过滤器 XML 文件

问题描述 投票:0回答:1

我希望能够下载 Gmail 过滤器 XML 文件(通过转到“设置”>“过滤器和阻止的地址”>“导出”访问),并且能够在进行更改后重新上传它。看了谷歌API后,似乎没有办法做到这一点。

我将使用 python 来操作 XML 文件,但我希望能够在开始之前下载该文件。

python python-3.x xml gmail-api
1个回答
0
投票

我们的 Gmail API 无法将过滤器下载为 XML 并将它们上传回来进行修改,您可以在 https://issuetracker.google.com/ 向他们的问题跟踪器提交功能请求问题/新?component=191602&template=824107

可能的解决方法:

Google 仅提供将所有过滤器检索到

dict
中的选项,使用他们的 QuickStart 我做了这个片段来检索所有过滤器:

SCOPES = ['https://www.googleapis.com/auth/gmail.settings.basic']
...
    try:
        # Call the Gmail API
        service = build('gmail', 'v1', credentials=creds)
        results = service.users().settings().filters().list(userId='me').execute()
        print(results)
        

    except HttpError as error:
        # TODO(developer) - Handle errors from gmail API.
        print(f'An error occurred: {error}')

输出将与此类似:

{
    "filter": [
        {
            "id": "aaaaaaaaaaaaBBBBBBBBBBBBZZZZZZZZZZZZZZ",
            "criteria": {"from": "[email protected]"},
            "action": {"addLabelIds": ["Label_ID"]},
        }
    ]
}

使用 API 修改现有过滤器似乎也是不可能的,目前您需要删除要更新的过滤器,然后重新创建它:

删除:

    try:
        # Call the Gmail API
        service = build('gmail', 'v1', credentials=creds)
        results = service.users().settings().filters().delete(userId='me',id='aaaaaaaaaaaaBBBBBBBBBBBBZZZZZZZZZZZZZZ').execute()
        print(results)

创建:

    try:
        service = build('gmail', 'v1', credentials=creds)
        filter = {
            'criteria': {"from": "[email protected]"},
            'action': {"addLabelIds": ["Label_ID"]},
        }
        results = service.users().settings().filters().create(userId='me',body=filter).execute()
        print(results)

一些文档:

© www.soinside.com 2019 - 2024. All rights reserved.