Unixサーバーから未読の電子メールリストを取得する

Unixサーバーから未読の電子メールリストを取得する

私たちはUnixサーバーを使って未読の電子メールリストを取得しようとしていますmailx -L。ただし、電子メールの件名が25文字を超えると切り捨てられます。

この問題をどのように解決しますか?

答え1

mailx標準出力の列数に合わせて出力を切り捨てます。列数を取得するには、ioctl(1, TIOCGWINSZ, ...)まずターミナルウィンドウのサイズを試し、失敗した場合はCOLUMNS環境変数を使用します。だからこれを試してみてください:

COLUMNS=999 mailx -L | cat

標準出力が端末ではないため、ioctlは失敗します|catmailx

答え2

メールは通常テキストファイル(メールボックスまたはメールディレクトリ形式)なのでgrep、、、またはすべてのスクリプト言語を使用しsedawk処理できます。メールの一般的な場所は、または/var/mailユーザー/var/spool/mailのホームディレクトリのファイル/ディレクトリです。

メッセージの件名を抽出するには、次のものを使用できますgrep

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

「タイトル:」部分を削除するには、次のようにパイプしますsed

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

未読メッセージフィルタリングは、未読状態と未読状態が別々のメッセージヘッダー行に格納されるため、より複雑です。 awk、Perl、Pythonなどで書かれた少し複雑なスクリプトが必要になるようです。これに対してテストされたソリューションは用意されていません。

関連情報