opdavies / gmail-filter-builder
此软件包已被放弃且不再维护。未建议替代软件包。
生成 XML 文件以导入 Gmail 过滤器。
2.4.0
2020-07-11 00:26 UTC
Requires
- php: ^7.1
- symfony/config: ^3.4
- symfony/console: ^3.4
- symfony/dependency-injection: ^3.4
- symfony/filesystem: ^3.4
- symfony/yaml: ^3.4
- tightenco/collect: ^5.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.11
- phpunit/phpunit: ^5.7 || ^7.0
- symfony/var-dumper: ^3.4
This package is auto-updated.
Last update: 2023-12-13 07:55:33 UTC
README
此库允许您使用 PHP 定义 Gmail 过滤器,然后生成可以导入到 Gmail 过滤器设置中的 XML 文件。
灵感来源于 https://github.com/antifuchs/gmail-britta。
安装和基本用法
步骤 1: 引入库
composer require opdavies/gmail-filter-builder
步骤 2: 创建您的过滤器文件
创建一个名为 filters.php
的文件,该文件返回一个包含 Filter
对象的数组。
例如
<?php require_once __DIR__.'/vendor/autoload.php'; return [ // Add your filters. ];
步骤 3: 生成 XML
运行 ./vendor/bin/generate-filters
以生成过滤器的 XML 并将其导出到文件。
选项
--input-file
- 指定包含过滤器的文件名(默认为filters.php
)。--output-file
- 指定输出文件名(默认为filters.xml
)。
步骤 4: 导入过滤器
登录您的 Gmail 账户,并使用生成的 XML 文件导入您的过滤器。
可用方法
条件
消息必须满足的条件才能应用过滤器
has
- 可以用于检查各种属性,例如附件、星标或标签。也可以用作以下一些方法的前置方法 - 例如from:john@example.com
- 并且对于更复杂的查询可能很有用。hasNot
- 上面的对立面。from
- 如果消息来自某个名称或电子邮件地址。to
- 如果消息发送给某个名称或电子邮件地址。subject
- 如果消息具有特定的主题。hasAttachment
- 如果消息有附件。fromList
- 如果消息来自邮件列表。excludeChats
- 从结果中排除聊天(默认为 false)。
动作
可以应用于匹配条件的消息的操作
label
- 向消息添加标签。archive
- 归档消息(跳过收件箱)。labelAndArchive
- 同时添加标签和归档消息。spam
- 将消息标记为垃圾邮件。neverSpam
- 永远不将消息标记为垃圾邮件。trash
- 删除消息。read
- 将消息标记为已读。star
- 为消息添加星标。forward
- 将消息转发到另一个电子邮件地址。important
- 将消息标记为重要。notImportant
- 将消息标记为不重要。categorise
- 为消息应用智能标签。
从部分加载过滤器
如果您想将过滤器分成不同的部分,请在每个部分中返回一个过滤器数组,并将 return Opdavies\GmailFilterBuilder\Service\Partials::load()
添加到 filters.php
以加载和组合它们。
默认为名为 filters
的目录,但您可以将参数指定为不同的目录名称。
从单独的文件加载地址
如果您想根据 to
地址进行过滤,而不是在过滤器存储库中包含您的地址,可以使用 Addresses::load()
从不同的文件中包含它们
$myAddresses = Addresses::load('my-addresses.php');
return [
Filter::create()
->from('foo@example.com')
->to($myAddresses)
->trash(),
];
在这个例子中,地址作为数组从 ~/.gmail-filters/my-addresses.php
返回,然后在过滤器中用作条件。
过滤器示例
// If an email is from a certain address, add a label. Filter::create() ->from('john@example.com') ->label('Something');