mailx를 사용하여 이메일 본문에 파일 내용을 보낼 때 문제가 발생합니다.

mailx를 사용하여 이메일 본문에 파일 내용을 보낼 때 문제가 발생합니다.

mailx 명령을 사용하여 이메일을 보내야 합니다. 명령은 다음과 같을 것임이 분명합니다.

echo "Body message" | mailx -s "Sending mail with Mailx" -r "[email protected]" "[email protected]"

이제 파일이 있고 해당 파일의 내용을 이메일 본문에 보내야 합니다.

mailx -s "Sending mail with Mailx" -r "[email protected]" "[email protected]" < bodymail.txt

또는

echo "$(cat bodymail.txt)" | mailx -s "Sending mail with Mailx" -r "[email protected]" "[email protected]"

두 경우 모두 저는 항상 파일을 첨부파일로 둡니다. 첨부 파일 대신 이메일 본문에 파일 내용을 넣는 방법을 알고 있나요? 본문 메시지는 다음과 같이 변환됩니다.ATT00001.bin파일 첨부. 메일 bodymail.txt의 파일에서 특수 문자를 제거했지만 본문 메시지에 내용을 표시하는 방법을 찾을 수 없습니다

답변1

\n제거해야 할 것은 캐릭터만이 아닙니다. 128자 이상의 ASCII 문자(예 á: é, , í, ñ, ó및 기타 악센트 부호가 있는 문자 ú)일 수도 있습니다. 삭제하려면:

tr -d '[\015\200-\377]' < input_file > output_file

파일을 정리한 후 다음과 같이 보낼 수 있습니다.

mailx -s 'Error Log' [email protected] < output_file

이번에는 바이너리 첨부 파일 대신 메시지 본문으로 전달되어야 합니다.

답변2

다음 명령을 시도해 보세요.

cat bodymail.txt | mailx -s "Sending mail with Mailx" [email protected]

답변3

이 문제가 발생했습니다. 매뉴얼 페이지에서 얻은 솔루션 팁:

Mailx에서는 입력 텍스트가 줄 바꿈(^J, \n)으로만 구분된 Unix 형식일 것으로 예상합니다. 캐리지 리턴(^M, \r)도 사용하는 비 Unix 텍스트 파일은 이진 데이터로 처리됩니다. 이러한 파일을 텍스트로 보내려면 예를 들어 tr -d '\015'를 통해 이러한 문자를 제거하세요.

tr로 보여주는 솔루션은 부분적인 솔루션일 뿐입니다. 파일에 다른 제어 문자가 있으면 mailx가 데이터를 본문으로 사용하는 대신 바이너리로 처리하고 추가하게 됩니다. 다음 명령은 모든 특수 문자를 제거하고 파일 내용을 메시지 본문에 넣습니다.

tr -cd "[:print:]\n" < SourceFile | mailx -s "Test Subject" [email protected]

tr에 대한 설명은 여기를 참조하세요. tr은 모든 특수 문자를 제거합니다

답변4

-q file
   Start the message with the contents of the specified file.  May be given in send mode only.

귀하의 경우에는 다음과 같습니다:

mailx -q bodymail.txt -s "Sending mail with Mailx" -r "[email protected]" 

관련 정보