从 Unix 服务器获取未读电子邮件列表

从 Unix 服务器获取未读电子邮件列表

我们正在尝试使用 Unix 服务器获取未读电子邮件列表mailx -L。但是,如果电子邮件主题的长度超过 25 个字符,则会被截断。

如何解决这个问题?

答案1

mailx截断其输出以适合标准输出上的列数。为了获取列数,它将ioctl(1, TIOCGWINSZ, ...)首先尝试 - 您的终端窗口大小 - 如果失败,它将使用COLUMNS环境变量。所以试试这个:

COLUMNS=999 mailx -L | cat

|cat那里,所以mailx它的标准输出不会是终端,从而迫使 ioctl 失败。

答案2

邮件通常只是文本文件(在信箱或者邮件目录格式),因此您可以使用grepsedawk或任何脚本语言来处理它们。邮件的常见位置是/var/mail/var/spool/mail或用户主目录中的某个文件/目录。

要提取邮件的主题,您可以grep这样使用:

grep -E '^Subject: ' /path/to/mail

要删除“主题:”部分,请通过管道将其传递sed

...| sed -e 's/^Subject: //'

未读邮件的过滤更加复杂,因为已读/未读状态存储在不同的邮件标题行中。我猜你需要一个用 awk、Perl、Python 等编写的稍微复杂的脚本。我没有为此准备好经过测试的解决方案。

相关内容