A quick tool for generating Gmail filters from YAML rules.
Project description
gmail-yaml-filters
A quick tool for generating Gmail filters from YAML rules.
Interested in helping? See CONTRIBUTING.md for a few guidelines.
Getting Started
By default, the command line script will generate XML to stdout, which you can then upload to Gmail yourself:
$ pip install gmail-yaml-filters
$ gmail-yaml-filters my-filters.yaml > my-filters.xml
Synchronization via Gmail API
If you are the trusting type, you can authorize the script to upload new filters (and remove any obsolete filters) via Gmail's API.
# Upload all filters (and create new labels) from the configuration file
$ gmail-yaml-filters --upload my-filters.yaml
# Delete any filters that aren't defined in the configuration file
$ gmail-yaml-filters --prune my-filters.yaml
# Do both of these steps at once.
$ gmail-yaml-filters --sync my-filters.yaml
# See what would happen but don't apply any changes.
$ gmail-yaml-filters --dry-run --sync my-filters.yaml
Sample Configuration
# Simple example
-
from: googlealerts-noreply@google.com
label: news
not_important: true
# Boolean conditions
-
from:
any:
- alice
- bob
- carol
to:
all: [me, -MyBoss]
label: conspiracy
# Nested conditions
-
from: lever.co
label: hiring
more:
-
has: 'completed feedback'
archive: true
-
has: 'what is your feedback'
star: true
important: true
# Foreach loops
-
for_each:
- list1
- list2
- list3
rule:
to: "{item}@mycompany.com"
label: "{item}"
# Foreach loops with complex structures
-
for_each:
- [mailing-list-1a, list1]
- [mailing-list-1b, list1]
- [mailing-list-1c, list1]
- [mailing-list-2a, list2]
- [mailing-list-2b, list2]
rule:
to: "{item[0]}@mycompany.com"
label: "{item[1]}"
-
for_each:
- {list: list1, domain: example.com}
- {list: list2, domain: whatever.com}
rule:
to: "{list}@{domain}"
label: "{list}"
Configuration
Supported conditions:
has
(alsomatch
)does_not_have
(alsomissing
,no_match
)subject
list
labeled
from
,to
,cc
, andbcc
category
deliveredto
filename
larger
smaller
size
rfc822msgid
is
andhas
work like Gmail's search operators, for example:has: attachment
is translated tomatch: "has:attachment"
is: -snoozed
is translated tono_match: "is:snoozed"
Supported actions:
archive
forward
important
(alsomark_as_important
)label
not_important
(alsonever_mark_as_important
)not_spam
read
(alsomark_as_read
)star
trash
(alsodelete
)
Any set of rules with ignore: true
will be ignored and not written to XML.
Similar Projects
- gmail-britta is written in Ruby and lets you express rules with a DSL.
- gmail-filters is written in Python and has a web frontend.
- google-mail-filter is written in Haskell and lets you express rules with a DSL.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
gmail-yaml-filters-0.9.2.tar.gz
(11.3 kB
view details)
File details
Details for the file gmail-yaml-filters-0.9.2.tar.gz
.
File metadata
- Download URL: gmail-yaml-filters-0.9.2.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/2.7.15
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cb87f776de74e3db81042ddefca3425499d9f7a68ebaf345fdf85b59d6a11268 |
|
MD5 | 4896561c963e27407f7b059e99da7a11 |
|
BLAKE2b-256 | 8b4d04b355ee96e3549f05f94febaa5f9a73e6ab6a021b5168d7d1a0b5e7d3a6 |