Sieve 郵件篩選器範例

以下為 Sieve 郵件篩選器的範例,其為使用程式碼編寫而程,若您要學習如何設定 Sieve 郵件篩選器,請查閱 開始使用 Sieve 郵件篩選器 章節,您也可以參考 Sieve 郵件篩選器撰寫教學,按照步驟從頭學習編寫 Sieve 篩選器的方法。

備註

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

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

使用下方的範例,會將所有來自 support-renew@gandi.net 的信件都放入收件夾(Inbox)內名為「Renew」的子資料夾裡:

# 從 "support-renew@gandi.net" 寄送電子郵件至我的 renew 資料夾。
require "fileinto";
if address :is ["from", "sender"] "support-renew@gandi.net" {
  fileinto "Inbox/Renew";
  stop;
}

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

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

自動回覆郵件

下列為自動回覆郵件的範例,其使用了 vacation、date 與 relational 擴充功能,讓您可以指定篩選器的啟用時間:

# 讓他人知道我下個禮拜放假。
require ["vacation","date","relational"];
# 如果郵件接收時間晚於或等於
# 8月1日,並且早於或等於8月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 擴充功能的詳情,請參考 標準頁面

使用子位址來篩選郵件

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

# 將寄至我 +amazon 子位址的郵件歸檔放進 amazon 資料夾。
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" "username" {
  if envelope :matches :detail "to" "*" {
    set :lower "name" "${1}";
  }

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

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

使用下方範例,會給予特定寄件者所寄來的信件特殊標記:

# 標記所有來自 "importantperson@example.com" 的郵件。
require ["imap4flags","envelope"];
if envelope "from" "importantperson@example.com" {
  setflag "\\Flagged";
  stop;
}

更多資訊

以下連結是更多關於 Sieve 郵件篩選器的資訊與範例: