Sieve 篩選器範例集

以下是一些 Sieve 的篩選器範例。若您要學習如何設定 Sieve 郵件過濾,請查閱 開始使用 Sieve。您也可以透過我們的 Sieve 篩選器撰寫 - 教學按照步驟學習撰寫 Sieve 篩選器的方法。

備註

Sieve 僅能讀取一個檔案,所以請您注意要將所有的篩選器放在同一個檔案內。

將 Gandi 寄來的續約信件放入續約資料夾

下方的範例會將所有來自 support-renew@gandi.net 的信件都放入收件夾內的 「Renew」 子資料夾裡。

# Send emails from "support-renew@gandi.net" to my renew folder.
require "fileinto";
if address :is ["from", "sender"] "support-renew@gandi.net" {
  fileinto "Inbox/Renew";
  stop;
}

資料夾名稱是從主資料夾開始的相對路徑。」Inbox/Renew」 表示主資料夾 (Inbox) 底下的 Renew 子資料夾。

stop 命令表示停止篩選器的動作,這表示信件在符合上述的條件式之後,就不會再比對其他篩選條件。

自動回覆郵件

下方的範例是自動回覆郵件的範例。範例使用了 「vacation」, 「date」 與 「relational」 擴充功能讓您可以指定此篩選器的啟用時間。

# Let people know I will be on vacation next week.
require ["vacation","date","relational"];
# If the date the email is received is greater than or equal to
# August 1st, and less than or equal to August 15
if allof (currentdate :value "ge" "date" "2025-08-01", currentdate :value "le" "date" "2025-08-15") {
    vacation :subject "Gone fishing"
             "Hello, I have gone fishing and will return sometime next week. - Mr. Smith";
}

關於 「vacation」 擴充功能的詳細設定,請參考 proposed standard

使用子位址來篩選郵件

您可以在郵件的帳號中,以增加 「+tag」 的方式來設定子位址。例如,當您在 Amazon 使用電子信箱來註冊帳號時,您可以使用 「myaddress+amazon@example.com」作為郵件地址。之後您會正常地收到信,不過因為收件人地址中有一個標籤 「+amazon」,所以篩選器會歸類符合條件的信件到指定的資料夾內。

# Put emails sent to my +amazon subaddress into the "amazon" folder.
require ["envelope", "subaddress", "fileinto"];
if envelope :detail "to" "amazon" {
        fileinto "INBOX/amazon";
    }

:user 運算子會比對一般的帳號部份,因此會比對 「myaddress+amazon@example.com」 中的 「myaddress」。而 :detail 運算子會比對帳號中增加的部份,就是上述範例的 「amazon」。您可以查看此 標準文件 來了解更多說明。

下方的範例中,您可以依照子位址的標籤來自動歸類到對應名稱的資料夾。

require ["variables", "envelope", "fileinto", "subaddress"];

if envelope :is :user "to" "edvil" {
  if envelope :matches :detail "to" "*" {
    set :lower "name" "${1}";
  }

  if string :is "${name}" "" {
    fileinto "INBOX";
  } else {
    fileinto "INBOX/${name}";
  }
}

標記來自特定寄件者的信件

下方範例會將特定寄件者所寄來的信件給予特殊標記。

# Flag all email I receive from "importantperson@example.com"
require ["imap4flags","envelope"];
if envelope "from" "importantperson@example.com" {
  setflag "\\Flagged";
  stop;
}