diff --git a/README.md b/README.md index dfdd417..ad247e5 100644 --- a/README.md +++ b/README.md @@ -3,3 +3,81 @@ This library allows you to define Gmail filters in PHP, and then generate XML that you can import into Gmail's filter settings Inspired by https://github.com/antifuchs/gmail-britta. + +## Installation and Basic Usage + +### Step 1: Require the Library + +```bash +composer require opdavies/gmail-filter-builder +``` + +### Step 2: Create Your Filters File + +Create a `filters.php` file that returns an array of `Filter` objects. + +For example: + +```php + filters.xml` to generate the XML for the filters and export it into a file. + +### Step 4: Import the Filters + +Log in to your Gmail account and import your filters using the generated XML file. + +## Available Methods + +### Conditions + +_Conditions that a message must satisfy for the filter to be applied:_ + +- `has` - can be used to check for various properties, such as attachments, stars or labels. Can also be used as an alternative to some of the following methods previously - e.g. `from:john@example.com` - and can be useful for more advanced queries. +- `hasNot` - the opposite of the above. +- `from` - if the message is from a certain name or email address. +- `to` - if the message is to a certain name or email address. +- `subject` - if the message has a certain subject. +- `hasAttachment` - if the message has an attachment. +- `excludeChats` - exclude chats from the results (false by default). + +### Actions + +_Actions you can apply to messages that match the conditions:_ + +- `label` - add a label to the message. +- `archive` - archive the message (skip the inbox). +- `labelAndArchive` - both add a label and archive the message. +- `spam` - mark the message as spam. +- `neverSpam` - never mark the message as spam. +- `trash` - delete the message. +- `read` - mark the message as read. +- `star` - star the message. +- `forward` - forward the message to another email address. +- `important` - mark the message as important. +- `notImportant` - mark the message as not important. +- `categorise` - apply a smart label to the message. + +## Filter Examples + +```php +// If an email is from a certain address, add a label. +Filter::create() + ->from('john@example.com') + ->label('Something'); +``` + +## References + +- [Search operators you can use with Gmail](https://support.google.com/mail/answer/7190?hl=en)