GMAIL API 的 PHP 实现 - 使用多个字符串进行过滤
Posted
技术标签:
【中文标题】GMAIL API 的 PHP 实现 - 使用多个字符串进行过滤【英文标题】:Php implementation for GMAIL API - filtering using multiple strings 【发布时间】:2018-11-17 21:20:17 【问题描述】:对于 GMAIL API - 有没有一种方法可以在查询中使用多个字符串,而无需单独遍历每个字符串。以下是一些用例:
1 - 获取包含 domain1.com 或 domain2.com 的电子邮件的所有结果
$list = $service->users_messages->listUsersMessages('me',
['maxResults' => 100, 'q' => 'domain1.com domain2.com']);
2 - 获取包含 domain1.com 或 domain2.com 且每个域专门匹配一个字符串的电子邮件的所有结果
$list = $service->users_messages->listUsersMessages('me',
['maxResults' => 100,
'q' => 'domain1.com statement ready, domain2.com view your statement']);
3 - 获取与特定字符串匹配的电子邮件的所有结果
$list = $service->users_messages->listUsersMessages('me',
['maxResults' => 100,
'q' => 'statement ready, view your statement']);
以上所有场景中的逗号都是字符串的分隔符。如果我有一个域或字符串,则查询工作正常。但它无法返回包含两个字符串的任何结果,例如语句准备就绪并查看您的语句。
【问题讨论】:
【参考方案1】:您想将查询用作“AND”和“OR”。如果我的理解是正确的,这个答案怎么样?作为示例字符串,这里使用“sample1”、“sample2”和“sample3”。
模式一:
如果要检索包含“sample1”、“sample2”和“sample3”所有字符串的邮件,可以使用以下查询。它使用空间。
sample1 sample2 sample3
你也可以这样使用。当字符串被括号括起来时,括号中的字符串用作“AND”。
(sample1 sample2 sample3)
模式二:
如果要检索至少包含“sample1”、“sample2”和“sample3”字符串之一的邮件,可以使用以下查询。 OR
是大写字母。
sample1 OR sample2 OR sample3
你也可以这样使用。当字符串被大括号括起来时,大括号中的字符串被用作“OR”。
sample1 sample2 sample3
模式3:
从模式 1 和 2 中,如果您想检索包含“sample1”和“sample2”的邮件或包含“sample3”的邮件,您可以使用以下查询。
(sample1 sample2) sample3
参考:
Search operators you can use with Gmail【讨论】:
这些运算符用于 Gmail 网络界面,而不是 GMAIL API。我尝试过类似的组合,但没有奏效。不过感谢您的尝试。 @user9465677 如果我误解了你的问题,我很抱歉。对不起给您带来不便。例如,在我的环境中,我可以在q
的gmail.users.messages.list
中使用(sample1 sample2) sample3
和sample1 OR sample2
。
让我玩弄它。可能是我做错了什么。
@user9465677 如果不起作用,当您提供示例查询时,我想在我的环境中确认它。你也可以在developers.google.com/gmail/api/v1/reference/users/messages/…进行测试
模式 1 和 2 我能够通过将所有 AND 语句放在括号中然后 OR 外部来使它们与一些一起工作。我没有模式 3 的用例。对我来说学习的是字符串不只是混合和匹配,您必须非常具体地了解它们。以上是关于GMAIL API 的 PHP 实现 - 使用多个字符串进行过滤的主要内容,如果未能解决你的问题,请参考以下文章
使用 gmail-api 和 google-api-php-client 发送电子邮件
使用带有 Laravel PHP 的 Gmail Api 读取网站上的所有 gmail 收件箱,然后回复特定的电子邮件
通过 Gmail API 发送电子邮件时应用 MSO 条件语句