
私たちはUnixサーバーを使って未読の電子メールリストを取得しようとしていますmailx -L
。ただし、電子メールの件名が25文字を超えると切り捨てられます。
この問題をどのように解決しますか?
答え1
mailx
標準出力の列数に合わせて出力を切り捨てます。列数を取得するには、ioctl(1, TIOCGWINSZ, ...)
まずターミナルウィンドウのサイズを試し、失敗した場合はCOLUMNS
環境変数を使用します。だからこれを試してみてください:
COLUMNS=999 mailx -L | cat
標準出力が端末ではないため、ioctlは失敗します|cat
。mailx
答え2
メールは通常テキストファイル(メールボックスまたはメールディレクトリ形式)なのでgrep
、、、またはすべてのスクリプト言語を使用しsed
てawk
処理できます。メールの一般的な場所は、または/var/mail
ユーザー/var/spool/mail
のホームディレクトリのファイル/ディレクトリです。
メッセージの件名を抽出するには、次のものを使用できますgrep
。
grep -E '^Subject: ' /path/to/mail
「タイトル:」部分を削除するには、次のようにパイプしますsed
。
...| sed -e 's/^Subject: //'
未読メッセージフィルタリングは、未読状態と未読状態が別々のメッセージヘッダー行に格納されるため、より複雑です。 awk、Perl、Pythonなどで書かれた少し複雑なスクリプトが必要になるようです。これに対してテストされたソリューションは用意されていません。