mailxで受信者を追加する方法

mailxで受信者を追加する方法

mailx電子メールを使用または変換するときに電子メールに受信者を追加するオプションは何ですか?私が知っていることは:

  • メールアドレスをメモリ内の文字で手動で入力してください。
  • .mailrc以前に保存したエイリアスを入力してください

カーソルキーを使用してナビゲートしたり、オートコンプリートで絞り込むことができる、以前に電子メールで送信した電子メールアドレスから生成された連絡先などの他のオプションはありますか?

答え1

Forthrin、私はこの問題を解決するエレガントな方法を見つけることができません。しかし、私はいくつかの考えをしており、考えられる解決策は次のとおりです。

「recipients」というディレクトリを作成し、送信したい電子メールアドレスの名前を付けたダミーファイルを作成し、このディレクトリでオートコンプリートを使用します。

mkdir recipients
cd recipients
touch [email protected]
mail -s "stuff" '[email protected]' < logfile.txt

ここで一重引用符は、「\」の発生をエスケープするのを防ぐのに役立ちます。

あまり良くないことはわかりますが、電子メールアドレスのテキストファイルから抽出し、そのようにオートコンプリート機能をまとめてこれを行うことができます。しかし、どうすればいいのかわかりません。私よりスマートな人が割り込むことができます。

また、以前の履歴とメールログを検索して送信したメッセージを表示し、そのアドレスを取得して受信者フォルダに配置することもできます。これで受信者フォルダがあるので、タブ補完を使用できるようになります(自動補完要求について)。

これは最善の解決策ではありませんが、mailxに連絡先機能は表示されません。

答え2

1つの解決策は、ラッパーを使用してアドレスを保存し、bash補完を使用して検索することです。

address_book=${HOME}/.address
mailx() {
    #loop through all args 
    for i; do
        # does this look like an email address
        if grep -xqE '[[:alnum:]_.+\-]+@[[:alnum:]\-]+.[[:alnum:].\-]+' <<< "${i}" && ! grep -xqF "${i}" "${address_book}"; then
            echo "${i}" >> "${address_book}"
        fi
    done
    /usr/bin/mailx "${@}"
}
_mailx_completion() {
    if [[ ! -f ${address_book} ]] ; then
        return
    fi
    # Only add each email once
    emails=($(grep -xvf<(echo "${COMP_WORDS[*]}"|tr ' ' '\n') "${address_book}"))
    if [[ ${#emails[@]} -eq 0 ]] ; then
        return
    fi
    # list emails
    COMPREPLY=( $(compgen -W "${emails[*]}" "${COMP_WORDS[${COMP_CWORD}]}") )
}                                                      
complete -F _mailx_completion mailx

".bashrc"に追加してください。

説明する:

ペアを傍受するためにbash関数を使用しますmailx。この関数は、電子メールアドレスのコマンドライン引数を取得します。見つかったら、アドレス帳を確認して、すでに存在するかどうかを確認します。それ以外の場合はリストに追加します。最後に、mailx元のパラメータを使用して呼び出します。

2番目の部分はbashオートコンプリート機能です。Tabこの機能はキーを押すたびに呼び出されます。~/.addressBashはを入力した後、Tabキーを押すたびにEメールアドレスを読み取りますmailx。追加のロジックは、コマンドラインに追加した後に提案リストから電子メールアドレスを削除することです。

この機能をすべて有効にするには、上記の内容を.bashrcファイルに追加してください。

関連情報