如何在 alpine 中自定义新邮件通知?

如何在 alpine 中自定义新邮件通知?

我使用 alpine 作为我的主要邮件阅读器。虽然我一天的大部分时间都在终端或 Emacs 上度过,但使用 notification-bin 获得新邮件的漂亮通知仍然是件好事。有什么方法可以配置 alpine 在收到新邮件时运行自定义命令吗?

答案1

alpine中有“NewMail FIFO Path”配置选项。引用帮助:

您可以让 Alpine 创建一个 FIFO 特殊文件(也称为命名管道),每当当前文件夹、收件箱或任何打开的 Stayopen 文件夹中收到新消息时,它都会发送一行消息。为了防止两个不同的 Alpine 都写入同一个 FIFO,Alpine 将仅创建 FIFO 并在其不存在时对其进行写入。

因此,我将选项设置为“/tmp/alpine.fifo”,并编写了简单的实用程序来从 FIFO 读取消息并调用“notify-send”:

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

#define FIFO_NAME "/tmp/alpine.fifo"

int main(void)
{   
    char s[512];
    char cmd[512];
    int num;
    int fd = open(FIFO_NAME, O_RDONLY);
    do {
        if ((num = read(fd, s, 300)) == -1)
            perror("read");
        else {
            s[num] = '\0';
            sprintf(cmd, "notify-send -t 0 'New mail:' '%s'", s);
            system(cmd);
        }
    } while (num > 0);

    return 0;
}

将其保存到 alpine-notifier.c,并使用“gcc alpine-notifier.c -o alpine-notifier”命令进行编译。 alpine 启动后启动“alpine-notifier”。享受弹出通知。

答案2

更新
我对之前的答案并不满意,所以我对脚本进行了很多改进并做了一个github 仓库为了它。

现在您不必在启动 alpine 后启动脚本,脚本会为您处理好一切。脚本的核心大部分是相同的(我只是稍微改进了解析):

#! /bin/bash
while read L; do
    n=$(($n + 1))  
    if [[ n -gt 3 ]]; then      
        name=`echo "$L"  | sed 's/  \+/\t/g;s/^\(+ \)\?\([^\t]*\)\t\([^\t]*\)[\t ].*/\2/'`
        subject=`echo "$L"  | sed 's/  \+/\t/g;s/^\([^\t]*\)\t\(Re: \?\)\?\([^\t]*\)[\t ].*/\3/'`
        box=`echo "$L"  | sed 's/  \+/\t/g;s/^\([^\t]*\)\t\([^\t]*\)[\t ]\([^\t]*\).*/\3/'`
        notify-send -t 10000 $iconcommand "Mail from $name" "$subject\n-\nIn your $box."
    fi
done < <(cat alpine.fifo)

剩下的内容有点大,无法在这里发布,所以有兴趣的人可以在回购协议

答案3

您不能使用专门的邮件通知工具,例如 Gnubiff、邮件通知或 kbiff 吗?

答案4

无法自定义alpine的“新邮件通知”。

文中没有提到这样的选项配置文档

这里还有一个引用来自 Eduardo Chappa 的邮件列表:

我注意到当新邮件到达时,alpine 会通过闪烁屏幕在 gnome 终端中发出视觉警报。有什么方法可以自定义警报,例如,它可以播放声音或其他内容吗?

[..]

正如您现在可以猜到的那样,Alpine 只会发出蜂鸣声。在 Web Alpine 中,可以发送要播放的文件(到浏览器)以获取新邮件通知。 Unix、Mac 或 Windows Alpine 中没有这样的功能。

您现在的选择是:

引用我最喜欢的邮件客户端的开发人员的话:

所有的邮件客户端都很烂...

:-)

相关内容