You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Lua在Neomutt中程序化删除邮件

用Neomutt Lua脚本实现邮件批量处理

完全可以通过Neomutt的Lua API实现批量查找特定发件人邮件,并完成删除或移动操作,以下是具体实现方案:

前置准备

  1. 确保你的Neomutt编译时启用了Lua支持(编译参数带--lua)
  2. 在Neomutt配置文件(如~/.neomuttrc)中添加Lua脚本加载语句:
    source "~/.config/neomutt/lua/init.lua"
    

核心实现脚本

创建~/.config/neomutt/lua/clean_senders.lua文件,写入以下代码:

-- 定义发件人处理规则:键为发件人匹配模式,值为目标文件夹(nil表示直接删除)
local sender_rules = {
    ["spam@example.com"] = nil,
    ["newsletter@example.org"] = "Archives/Newsletters",
    ["promo@shop.com"] = "Archives/Promotions"
}

-- 单邮件处理逻辑
local function process_msg(msg)
    local sender = mutt.msg_get_header(msg, "From")
    if not sender then return end

    for pattern, target in pairs(sender_rules) do
        -- 匹配发件人(如需精确匹配邮箱,可改用string.match(sender, "<"..pattern..">"))
        if string.find(sender, pattern) then
            if target then
                -- 移动邮件到目标文件夹
                local ok = mutt.msg_move(msg, target)
                mutt.debug(1, ok and string.format("移出发件人 %s 的邮件到 %s", sender, target) 
                                  or string.format("移动发件人 %s 的邮件失败", sender))
            else
                -- 直接删除邮件
                mutt.msg_delete(msg, true) -- true为立即删除,false为标记待删
                mutt.debug(1, string.format("删除发件人 %s 的邮件", sender))
            end
            break
        end
    end
end

-- 注册自定义Neomutt命令:在终端输入:clean_senders即可执行
mutt.command_register("clean_senders", function()
    mutt.debug(1, "开始执行发件人邮件清理...")
    mutt.msg_iter(process_msg) -- 遍历当前邮箱所有邮件
    mutt.debug(1, "清理完成")
end)

然后在~/.config/neomutt/lua/init.lua中引入该脚本:

dofile("~/.config/neomutt/lua/clean_senders.lua")

使用方式

  1. 启动Neomutt后,进入目标邮箱(如收件箱)
  2. 输入:clean_senders并回车,脚本会自动按规则处理邮件
  3. 如需启动时自动执行清理,可在clean_senders.lua末尾添加启动钩子:
    mutt.hook_register("startup", function()
        mutt.command_exec("folder +INBOX") -- 切换到收件箱
        mutt.command_exec("clean_senders")
    end)
    

注意事项

  • 确保目标文件夹已存在,否则移动操作会失败
  • 可通过Neomutt的:debug命令查看脚本日志(对应代码中mutt.debug()的输出)
  • 匹配模式支持Lua字符串匹配语法,可灵活调整匹配精度

内容的提问来源于stack exchange,提问作者caltuntas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 22:27:08