在筛子中测试“已收到”电子邮件标题

时间:2016-03-30 10:51:18

标签: email sieve-language

以下是我如何配置筛选以将发送到Button WeekDoneButton = (Button) viewWeeklyTimetable.findViewById(R.id.week_done_button); WeekDoneButton.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorAccent)); 的任何邮件转发到我的私人电子邮件地址的示例。

[nameA|nameB|nameC]@example.org

有时候,电子邮件不会转发,因为它发送到的地址隐藏在“已接收”标题的某处。

if address :localpart :is ["To","Cc","Bcc"]
 ["nameA", "nameB", "nameC"] {
    redirect "<my private email address>";
    stop;
}

是否有一种有效的方法可以在筛选规则中捕获这些电子邮件?

2 个答案:

答案 0 :(得分:1)

这里有XY问题。你真正想要做的是根据传递的地址进行过滤,而不是根据标题中的地址进行过滤。 (由于它可能不直观,标题中的地址可能与它被传递到的地址无关,这就是Bcc可以工作的方式。)

针对实际SMTP信封进行测试的命令是envelope

require "envelope";
if envelope :localpart :is "to" ["nameA", "nameB", "nameC"] {
    redirect "<my private email address>";
    stop;
}

这将处理传递给这些名称的所有邮件,无论它们是否显示在邮件标题中。

答案 1 :(得分:0)

在筛子的帮助下&#39;索引功能,您可以从收到的标头中解析收件人地址。

对于BCC排序,我通常会这样做:

require ["fileinto", "envelope", "variables", "mailbox", "index", "subaddress"];
...
if header :index 3 :matches "Received" "*<*@example.com>*" {   
  set :lower "foldername" "${2}";
  fileinto :create "inbox.${foldername}";
} elsif header :index 2 :matches "Received" "*<*@example.com>*" {       
  set :lower "foldername" "${2}"; 
  fileinto :create "inbox.${foldername}";
}
...

在我收到的邮件的已收到标题中,地址设置在尖括号中,这就是为什么我在上面的示例中选择了该模式的原因。

此外,有时收到的标题数量不同,因此我至少测试了两个不同的标题。