Moved the file containing sender addresses to filter to the XDG_DATA_HOME directory (usually `~/.local/share/imapfilter/`) where it will look for a `rollup.txt` file. This is to separate the configuration values (the filters themselves) somewhat from the data they act on (values to filter and searches to accomplish).
44 lines
1.2 KiB
Lua
44 lines
1.2 KiB
Lua
function sendToFolder(folderFrom, folderTo, senders)
|
|
local messages = folderFrom:select_all()
|
|
for _, sender in pairs(senders) do
|
|
local filtered=messages:contain_from(sender)
|
|
filtered:mark_seen()
|
|
filtered:move_messages(folderTo)
|
|
end
|
|
end
|
|
|
|
-- will set filters to be grabbed from XDG-compliant filter directory
|
|
-- can be overridden with env var IMAPFILTER_ROLLUPFILE
|
|
function getRollupFile(fname)
|
|
local f
|
|
local fname=fname or "rollup.txt"
|
|
if os.getenv("IMAPFILTER_ROLLUPFILE") then
|
|
f=os.getenv("IMAPFILTER_ROLLUPFILE")
|
|
elseif os.getenv("XDG_DATA_HOME") then
|
|
f=os.getenv("XDG_DATA_HOME") .. "/imapfilter/" .. fname
|
|
else
|
|
f=os.getenv("HOME") .. "/.local/share/imapfilter/" .. fname
|
|
end
|
|
return f
|
|
end
|
|
|
|
function getSenderList(rollupfile)
|
|
local rollupSenders={}
|
|
|
|
local file = io.open(rollupfile)
|
|
if file then
|
|
for line in file:lines() do
|
|
table.insert(rollupSenders, line)
|
|
end
|
|
else
|
|
print("ERROR: rollup did not find rollup.txt file containing mail addresses at " .. rollupfile or "" )
|
|
end
|
|
return rollupSenders
|
|
end
|
|
|
|
sendToFolder (
|
|
accounts.gmail["Inbox"],
|
|
accounts.gmail["Dump"],
|
|
getSenderList(getRollupFile())
|
|
)
|