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

求助:基于邮件搭建简易远程任务自动化系统的实现方案

嘿,我来帮你搞定这个自动化脚本!既然你已经有Mutt和grep了,完全不用额外安装其他工具就能实现需求,咱们一步步来落地:

整体实现思路

核心就是用Bash脚本把你描述的流程串起来:发送指定标题的邮件 → 拉取最近50封邮件标题 → 筛选最新的匹配标题 → 提取数字写入文件 → 等待5分钟后循环。

分步拆解每个环节

1. 发送指定标题的空邮件

用Mutt的-s参数指定标题,< /dev/null用来传入空正文,命令模板如下(记得替换收件人邮箱):

mutt -s "Pattern1 ($random_num)" -- your-recipient@example.com < /dev/null

这里的$random_num可以用$RANDOM生成随机数,或者如果你的number是递增的,也可以从之前写入的文件里读取后加1,看你实际需求。

2. 读取最近50封邮件的标题

Mutt可以通过list命令列出邮箱里的邮件标题,配合head -50取最近50封(默认list输出是最新邮件在最顶部,如果你的Mutt配置是旧邮件在上,就换成tail -50 | tac来反转顺序):

mutt -f ~/Mail/inbox -e 'set confirm_delete=no' -e 'set quiet' -e 'list' | head -50

注意:~/Mail/inbox是默认的邮箱路径,你需要改成自己实际的邮箱存储路径(比如有的是~/.mutt/mail/inbox,可以用Mutt的folder配置项确认)。

3. 匹配最新的「Pattern2 (number)」标题

用grep的-m 1参数只取第一个匹配结果(也就是最新的那封),正则匹配标题格式:

grep -m 1 "Pattern2 ([0-9]\+)"

4. 提取标题中的number

用grep的-oP(Perl正则)精准提取括号里的数字:

grep -oP 'Pattern2 \((\d+)\)' | grep -oP '\d+'

5. 写入文件 & 等待循环

把提取到的数字写入目标文件(这里用>覆盖写入,要是想追加就换成>>),然后用sleep 300等待5分钟:

echo "$extracted_num" > /path/to/your/output.txt
sleep 300
完整可运行脚本

把上面的环节整合起来,你可以保存为mail_auto_task.sh,然后给执行权限chmod +x mail_auto_task.sh:

#!/bin/bash

# 配置参数,根据自己实际情况修改
RECIPIENT="your-recipient@example.com"
MAILBOX_PATH="~/Mail/inbox"
OUTPUT_FILE="/path/to/your/output.txt"

while true; do
    # 1. 发送Pattern1邮件,这里用随机数当number,你可以改成自己的逻辑
    random_num=$RANDOM
    mutt -s "Pattern1 ($random_num)" -- $RECIPIENT < /dev/null
    echo "已发送Pattern1 ($random_num)邮件"

    # 2. 拉取最近50封邮件标题,筛选最新的Pattern2匹配项并提取数字
    extracted_num=$(mutt -f $MAILBOX_PATH -e 'set confirm_delete=no' -e 'set quiet' -e 'list' | head -50 | grep -m 1 "Pattern2 ([0-9]\+)" | grep -oP 'Pattern2 \((\d+)\)' | grep -oP '\d+')

    # 3. 如果提取到数字,写入文件
    if [ -n "$extracted_num" ]; then
        echo "$extracted_num" > $OUTPUT_FILE
        echo "已提取数字$extracted_num并写入文件"
    else
        echo "未找到匹配Pattern2的邮件标题"
    fi

    # 4. 等待5分钟后循环
    echo "等待5分钟后继续..."
    sleep 300
done
注意事项
  • 确保你的Mutt已经配置好SMTP和POP/IMAP,能正常收发邮件,不然发送或读取环节会失败。
  • 邮箱路径一定要核对正确,不然Mutt找不到邮件列表。
  • 如果你的Muttlist命令输出的邮件顺序是旧的在前,把head -50改成tail -50 | tac,这样最新的50封会排在最前面,保证grep拿到的是最新匹配项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:43:55