mailx에서 수신자를 추가하는 방법

mailx에서 수신자를 추가하는 방법

mailx이메일을 사용하거나 변형할 때 이메일에 수신자를 추가할 수 있는 옵션은 무엇입니까? 내가 아는 것은:

  • 이메일 주소를 메모리에서 문자별로 수동으로 입력하세요.
  • .mailrc아까 저장한 별칭을 입력하세요

커서 키를 사용하여 탐색하거나 자동 완성으로 범위를 좁힐 수 있는 이전에 이메일로 보낸 이메일 주소에서 생성된 주소록과 같은 다른 옵션이 있습니까?

답변1

Forthrin, 저는 이 문제를 해결할 우아한 방법을 찾을 수 없습니다. 그러나 나는 몇 가지 생각을 했고 가능한 해결책은 다음과 같습니다.

"recipients"라는 디렉터리를 만들고, 보내려는 이메일 주소의 이름을 딴 더미 파일을 만들고, 이 디렉터리에서 자동 완성을 사용하세요.

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

여기에서 작은따옴표는 "\" 발생을 이스케이프 처리하는 것을 방지하는 데 도움이 됩니다.

별로 좋지 않다는 것은 알지만 이메일 주소의 텍스트 파일에서 추출하고 그런 식으로 자동 완성 기능을 함께 엮어 이 작업을 수행할 수 있습니다. 하지만 어떻게 해야 할지 잘 모르겠습니다. 나보다 똑똑한 사람이 끼어들 수 있습니다.

또한 이전 기록과 메일 로그를 검색하여 보낸 메시지를 보고 해당 주소를 가져와 수신자 폴더에 넣을 수 있습니다. 이제 수신자 폴더가 있으므로 탭 완성을 사용할 수 있습니다(자동 완성 요청에 대해).

이것이 최선의 해결책은 아니지만 mailx에 주소록 기능이 표시되지 않습니다.

답변2

한 가지 해결책은 래퍼를 사용하여 주소를 저장하고 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원래 매개변수를 사용하여 호출합니다.

두 번째 부분은 bash 자동 완성 기능입니다. Tab이 기능은 키를 누를 때마다 호출됩니다. ~/.addressBash는 를 입력한 후 Tab 키를 누를 때마다 이메일 주소를 읽습니다 mailx. 추가 논리는 명령줄에 추가한 후 제안 목록에서 이메일 주소를 제거하는 것입니다.

이 모든 기능을 활성화하려면 위의 내용을 .bashrc파일에 추가하세요.

관련 정보