Linux 명령 줄을 사용하여 파일을 전자 메일 첨부 파일로 보내려면 어떻게합니까?


289

Linux 서버에서 매일 밤마다 실행되는 스크립트를 작성하여 mysqldump각 MySQL 데이터베이스를 .sql 파일로 백업하고 압축 된 .tar 파일로 함께 패키지화했습니다. 다음으로 수행하려는 단계는 보관을 위해 해당 tar 파일을 전자 메일을 통해 원격 전자 메일 서버로 보내는 것입니다. 백업 텍스트 파일을 다음 mailx과 같이 파이핑하여 본문에 원시 스크립트를 이메일로 보낼 수있었습니다 .

$ cat mysqldbbackup.sql | mailx backup@email.com

catmailx수신자의 이메일 주소를 인수로 전달 하여 프로그램에 파이프되는 백업 파일의 텍스트를 에코합니다 .

이것이 내가 필요한 것을 달성하는 동안 한 단계 더 나을 수 있다고 생각합니다. 쉘 스크립트를 사용하거나 압축 된 .tar 파일을 보내는 전자 메일 메시지에 첨부 파일 로 보내는 방법이 있습니까? 헤더 데이터를 포함하고 종종 단어 줄 바꿈 문제가있는 매우 긴 전자 메일 메시지를 처리 ​​해야하는 것보다 낫습니다.


1
MySQL 데이터베이스를 백업하는 스크립트를 공유 할 수 있습니까?
Almino Melo

죄송합니다. 한동안이 작업을 수행하지 않았습니다. mysqldump출력을 호출 한 다음 전자 메일에 (with mutt) 를 첨부하는 것과 관련이 있음을 알고 있습니다 . 나는 또한 출력을 zip / tar.gz로 압축하는 단계를
밟았을 수도있다

1
정말 궁금한 이유는 무엇입니까? 백업을 이메일로 보내거나 동기화하지 않으시겠습니까?
jchook

답변:


298

똥개 중 어느 것도 나를 위해 일하지 않았습니다. 이메일 주소가 첨부 파일의 일부라고 생각했습니다. 해야했다 :

echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- recipient@domain.com

1
mutt 1.5.21 (2010-09-15)을 사용하고 있으며 수신자 이메일 뒤에 -a 매개 변수가 필요합니다
nurettin

openSUSE Leap 42.1에서 Mutt 1.5.24 (2015-08-30)를 사용하여 나를 위해 일했습니다.
Antonio Vinicius Menezes Medei

3
@fugitive는 "옵션 끝"을 의미합니다. 한 번 봐 가지고 unix.stackexchange.com/questions/11376/...
rynop

예외를 확인하고 전송을 다시 시도하는 방법이 있습니까?
ti034

79

또는 실패한 음소거 :

gzip -c mysqldbbackup.sql | uuencode mysqldbbackup.sql.gz  | mail -s "MySQL DB" backup@email.com

26
이것은 uuencoded 부분을 첨부 파일이 아닌 인라인으로 보냅니다 . 많은 메일 클라이언트는 이것을 인식 하고 uuencoded 부분을 첨부 파일로 표시 합니다.
FuePi

4
이 시대에는 uuencode를 사용하지 마십시오. MIME은 약간 더 복잡하지만 훨씬 사용자 친화적입니다.
tripleee

@DavidGiven :이 질문에 대한 다른 모든 대답을 예를 들어 (빠르게 살펴보십시오)보십시오.
tripleee

6
그들 중 누구도 메일을 사용하지 않습니다!
David 주어진

그런 다음 예를 들어 stackoverflow.com/questions/3317174/…text/html첨부 파일에 적합한 MIME 유형으로 교체 하십시오. (이 구체적인 예를 들어, 나는 추측한다 application/gzip.)
tripleee

43

리눅스 버전에 따라 메일이라고 할 수 있습니다. 위의 @David를 인용하려면 :

mail -s "Backup" -a mysqldbbackup.sql backup@email.com < message.txt

또는 :

cat message.txt | mail -s "Backup" -a mysqldbbackup.sql backup@email.com 

@ KarelBílek : 다른 옵션은 어떻습니까?
Nathan Fellman

두 솔루션 모두 저에게 효과적이지 않습니다. Outlook 2013이 포함 된 이메일을 받았으며 메일에는 파일 이름 만 포함되어 있습니다.
nickel715

2
내 맨 페이지 읽기 :-a, --append=HEADER: VALUE append given header to the message being sent
exhuma

2
나단, 그것은 다윗 견적처럼 보이는 것은 잘못이다 - 그가 사용하는 mutt명령을하지 mail. 또한 다른 사람들이 지적했듯이 mutt은 이제 --주소 앞에 인수 가 필요한 것으로 보입니다 . 그리고 그 @exhuma을보고 나는 실제로 무엇에 동의 -a에서 옵션 mail않습니다 - 내가 잠시이 혼동있어)
nealmcb

7
-a 대신 -A를 사용해야합니다. -a, --append=HEADER: VALUE append given header to the message being sent -A, --attach=FILE attach FILE
Victor Perov

41

를 보면 man mailxmailx 프로그램에는 파일을 첨부 할 수있는 옵션이 없습니다. mutt와 같은 다른 프로그램을 사용할 수 있습니다.

echo "This is the message body" | mutt -a file.to.attach -s "subject of message" recipient@domain.com

mutt의 명령 행 옵션은로 표시 될 수 있습니다 mutt -h.


감사! 그 속임수를 사용하여 조용히 작업을 수행하는 데 어려움을 겪고있었습니다.
키트 Roed

10
분명히 구문이 변경되어 mutt에 대해 변경되었으므로 아래의 답변 ( stackoverflow.com/a/9524359/10608 )을 참조하십시오 --.
Alexander Bird

29

이 시나리오를 위해 만들어진 SendEmail을 사용합니다. 우분투 패키지로 제공되므로 사용할 수 있다고 가정합니다.

sendemail -f sender@some.where -t receiver@some.place -m "Here are your files!" -a file1.jpg file2.zip

http://caspian.dotconf.net/menu/Software/SendEmail/


귀하의 예에서는 "sendemail"대신 "sendEmail"이어야합니다.
Davit

1
예, 아니오-소스 (카스 피안)는 대문자 E를 사용하는 반면, 이것은 유닉스 세계에서 명령 행 도구에 대한 흔하지 않은 이름 지정 전략이지만,이 소프트웨어의 우분투 패키징은 모두 sendemailsendEmail를 모두 제공합니다 /usr/bin/.
Fredrik Wendt 2016 년

My Xubuntu 14.04.3이 설치되지 않았습니다SendEmail
Vitaly Zdanevich

3
sendemail을 설치하고 명령이 작동하려면 "-f mandatory@email.com"을 필수 필드에 추가하려면 "sudo apt install sendemail"을 입력하십시오. sendemail -f mandatory@email.com-t to@some.one -m "Here are your files!" -a file1.jpg file2.zip
Sailendra Pinupolu

28

나는 mpack을 사용합니다.

mpack -s subject file user@example.com

불행히도 mpack은 '-'를 stdin의 별칭으로 인식하지 않습니다. 그러나 다음 작업은 (쉘) 별칭 또는 스크립트로 쉽게 래핑 될 수 있습니다.

mpack -s subject /dev/stdin loser@example.com < file

이것은 stdin을 위해 bash에서 작동 할 수 있습니다. 나는 mpack이 없어서 시도하지 않았다 :mpack -s subject /dev/stdin loser@example.com <(stdout_generating_program)
thomasa88

23
 echo 'These are contents of my mail' | mailx -s 'This is my email subject' -a /path/to/attachment_file.log email_id@example.com

4
이것은 정답입니다. 기본 mailx를 사용하고 완벽하게 작동합니다. cron을 사용할 때 Mutt v1.5.21은> 1MB 첨부 파일 전송을 거부합니다.
조셉

EC2에서 작동하는 것을 찾고 있었고 정상적으로 작동했습니다.
특이점

6
mailx제대로 표준화되지 않았습니다. 그것을 권장하는 모든 대답은 이주의 사항을 지적해야합니다. 공통적으로 사용되는 호환되지 않는 변형이 세 개 이상 있습니다.
tripleee

13

한때 Solaris에서 ksh에 대해이 기능을 작성했습니다 (base64 인코딩에 Perl 사용).

# usage: email_attachment to cc subject body attachment_filename
email_attachment() {
    to="$1"
    cc="$2"
    subject="$3"
    body="$4"
    filename="${5:-''}"
    boundary="_====_blah_====_$(date +%Y%m%d%H%M%S)_====_"
    {
        print -- "To: $to"
        print -- "Cc: $cc"
        print -- "Subject: $subject"
        print -- "Content-Type: multipart/mixed; boundary=\"$boundary\""
        print -- "Mime-Version: 1.0"
        print -- ""
        print -- "This is a multi-part message in MIME format."
        print -- ""
        print -- "--$boundary"
        print -- "Content-Type: text/plain; charset=ISO-8859-1"
        print -- ""
        print -- "$body"
        print -- ""
        if [[ -n "$filename" && -f "$filename" && -r "$filename" ]]; then
            print -- "--$boundary"
            print -- "Content-Transfer-Encoding: base64"
            print -- "Content-Type: application/octet-stream; name=$filename"
            print -- "Content-Disposition: attachment; filename=$filename"
            print -- ""
            print -- "$(perl -MMIME::Base64 -e 'open F, shift; @lines=<F>; close F; print MIME::Base64::encode(join(q{}, @lines))' $filename)"
            print -- ""
        fi
        print -- "--${boundary}--"
    } | /usr/lib/sendmail -oi -t
}

8
GNU / 리눅스에서는 base64펄 대신 명령을 사용하여 인코딩 할 수 있습니다.
MestreLion

12

mutt 을 사용 하여 첨부 파일이있는 이메일을 보낼 수 있습니다

mutt -s "Backup" -a mysqldbbackup.sql backup@email.com < message.txt

2
적어도 1.5.21 (Ubuntu trusty)의 mutt -a에서는 수신자 다음 mutt -s "Backup" backup@email.com -a mysqldbbackup.sql < message.txt--옵션을 넣거나 rynop의 답변에 표시된 것처럼 수신자 앞에 옵션을 사용해야합니다 .
nealmcb

10

mailx를 사용하여 하나의 일반 텍스트 첨부 파일로 일반 텍스트 본문 전자 메일을 보냅니다.

(
  /usr/bin/uuencode attachfile.txt myattachedfilename.txt; 
  /usr/bin/echo "Body of text"
) | mailx -s 'Subject' youremail@gmail.com

아래는 줄 바꿈없이 위와 동일한 명령입니다.

( /usr/bin/uuencode /home/el/attachfile.txt myattachedfilename.txt; /usr/bin/echo "Body of text" ) | mailx -s 'Subject' youremail@gmail.com

/home/el/attachfile.txt이 내용으로 정의 된 파일이 있는지 확인하십시오 .

<html><body>
Government discriminates against programmers with cruel/unusual 35 year prison
sentences for making the world's information free, while bankers that pilfer 
trillions in citizens assets through systematic inflation get the nod and 
walk free among us.
</body></html>

uuencode가 없으면 다음을 읽으십시오. /unix/16277/how-do-i-get-uuencode-to-work를

Linux에서 sendmail을 사용하여 PDF 첨부 파일로 HTML 본문 이메일을 보내십시오.

ksh가 설치되어 있는지 확인하십시오 : yum info ksh

sendmail이 설치 및 구성되어 있는지 확인하십시오.

uuencode가 설치되어 있고 사용 가능한지 확인하십시오. /unix/16277/how-do-i-get-uuencode-to-work

라는 새 파일을 만드십시오 test.sh 홈 디렉토리에 넣으십시오./home/el

다음 코드를 넣으십시오 test.sh.

#!/usr/bin/ksh
export MAILFROM="el@defiant.com"
export MAILTO="youremail@gmail.com"
export SUBJECT="Test PDF for Email"
export BODY="/home/el/email_body.htm"
export ATTACH="/home/el/pdf-test.pdf"
export MAILPART=`uuidgen` ## Generates Unique ID
export MAILPART_BODY=`uuidgen` ## Generates Unique ID

(
 echo "From: $MAILFROM"
 echo "To: $MAILTO"
 echo "Subject: $SUBJECT"
 echo "MIME-Version: 1.0"
 echo "Content-Type: multipart/mixed; boundary=\"$MAILPART\""
 echo ""
 echo "--$MAILPART"
 echo "Content-Type: multipart/alternative; boundary=\"$MAILPART_BODY\""
 echo ""
 echo "--$MAILPART_BODY"
 echo "Content-Type: text/plain; charset=ISO-8859-1"
 echo "You need to enable HTML option for email"
 echo "--$MAILPART_BODY"
 echo "Content-Type: text/html; charset=ISO-8859-1"
 echo "Content-Disposition: inline"
 cat $BODY
 echo "--$MAILPART_BODY--"

 echo "--$MAILPART"
 echo 'Content-Type: application/pdf; name="'$(basename $ATTACH)'"'
 echo "Content-Transfer-Encoding: uuencode"
 echo 'Content-Disposition: attachment; filename="'$(basename $ATTACH)'"'
 echo ""
 uuencode $ATTACH $(basename $ATTACH)
 echo "--$MAILPART--"
) | /usr/sbin/sendmail $MAILTO

상단의 내보내기 변수 변경 test.sh주소와 파일 이름을 반영 .

테스트 pdf 문서를 다운로드하여 /home/elpdf-test.pdf라고합니다.

/home/el/email_body.htm이라는 파일을 만들고 다음 줄을 넣으십시오.

<html><body><b>this is some bold text</b></body></html>

pdf 파일에 충분한 755 권한이 있는지 확인하십시오.

스크립트를 실행 ./test.sh

이메일받은 편지함을 확인하십시오. 텍스트는 HTML 형식이어야하며 pdf 파일은 자동으로 이진 파일로 해석됩니다. 이메일을 자신에게 보내더라도,이 기능을 하루에 15 번 이상 사용하지 않도록주의하십시오. Gmail의 스팸 필터는 도메인을 통해 이메일을 발송하는 옵션을 제공하지 않고도 차단할 수 있습니다. 더 이상 작동하지 않거나 첨부 파일 만 통과하거나 전자 메일이 전혀 전송되지 않습니다. 이것에 대해 많은 테스트를 수행 해야하는 경우 며칠에 걸쳐 확산 시키십시오. 그렇지 않으면 스패머로 표시되며이 기능은 더 이상 작동하지 않습니다.


1
나를 위해 그것은 다른 방향으로 일했습니다. (echo 'Email Body'; uuencode filename filename) | mailx -s 'Subject' user@domain.com
비키

uuencode입니다 하지제대로 첨부 파일 . 단순히 다른 텍스트 중간에 oomputer가 읽을 수있는 텍스트 Blob을 포함합니다. 더 나은 메커니즘이 없었을 때 잘 작동했지만 20 년 전이었습니다.
tripleee

9

이 몇 가지 답은 여기에 있습니다 제안 mail또는 mailx이 더 배경 그래서 당신이 상황에서이를 해석하는 데 도움이.

역사 노트

Unix의 기원은 mailBell Labs Unix ™ (1969?)의 초기 역사의 안개로 거슬러 올라갑니다. 아마도 우리는 여기서 완전한 계보로 들어가기를 희망 할 수 없습니다. 코드를 상속하거나 재 구현하는 많은 프로그램이 있고 (또는 코드를 재 구현하여 코드를 상속받는) 많은 프로그램이 mail있으며 "the"로 명확하게 식별 할 수있는 단일 코드베이스가 없다고 말하면 충분합니다 mail.

그러나 그 입장에 대한 경쟁자 중 하나는 확실히 "Berkeley Mail"인데 원래 Mail2BSD (1978)에서 대문자 M으로 불려졌다. 그러나 3BSD (1979)에서는 소문자 mail명령을 대체하여 새로운 혼동을 일으켰습니다. SVR3 (1986)은라는 유도체를 포함 하였다 mailx. 은 x아마도이 독특하고 구별하기 위해 추가되었습니다; 그러나 이것도 이제는 복사, 재 구현 및 절단되어 결정적인 단일 버전이 존재하지 않습니다.

위로 하루의 사실상의 전자 메일을 통해 바이너리를 전송하는 표준이었다 uuencode. 여전히 존재하지만 많은 유용성 문제가 있습니다. 가능하면 1980 년대 후반과 구체적으로 대화하기 위해 노력하지 않는 한 MIME 첨부 파일을 대신 보내야합니다.

MIME 은 1990 년대 초에 도입되어 영어의 하위 집합에만 적합한 단일 문자 집합으로 일반 텍스트 이외의 다양한 유형의 콘텐츠를 지원하는 등 전자 메일 관련 여러 문제를 해결했습니다. ). 이로 인해 멀티 파트 메시지, 국제화, 풍부한 컨텐츠 유형 등에 대한 지원이 도입되었으며 1990 년대에 빠르게 인기를 끌었습니다.

(그만큼 가보 mail/ mailx역사 메모 는이 글을 작성할 때 가장 도움이되었으며, 그런 종류의 일을하고 있다면 확실히 읽을 가치가 있습니다.)

현재 오퍼링

2018 년 현재 데비안에는 mailor mailx명령 을 포함하는 세 가지 패키지가 있습니다 . (을 검색 할 수 있습니다 Provides: mailx.)

debian$ aptitude search ~Pmailx
i   bsd-mailx                       - simple mail user agent
p   heirloom-mailx                  - feature-rich BSD mail(1)
p   mailutils                       - GNU mailutils utilities for handling mail

(저는 데비안을 권장 사항으로 부르지 않습니다. 사용하는 것이므로 익숙합니다. 각 패키지 이름을 참조하여 다양한 대안을 명확하게 구별하는 수단을 제공합니다. 우분투가이 패키지를 얻는다.)

이와 관련하여 코드를 이식 가능해야하고 다소 복잡한 패키지에 의존 할 수있는 경우 MIME 첨부 파일을 이식 가능하게 보내는 간단한 방법은을 사용하는 것 mutt입니다.


나는 원래 적당히 인기 중복 된 질문에 대한 답변으로이 게시 stackoverflow.com/questions/902591/...
tripleee

4

또 다른 대안은 Swaks (Swiss Army Knife for SMTP)입니다.

swaks -tls \
    --to ${MAIL_TO} \
    --from ${MAIL_FROM} \
    --server ${MAIL_SERVER} \
    --auth LOGIN \
    --auth-user ${MAIL_USER} \
    --auth-password ${MAIL_PASSWORD} \
    --header "Subject: $MAIL_SUBJECT" \
    --header "Content-Type: text/html; charset=UTF-8" \
    --body "$MESSAGE" \
    --attach mysqldbbackup.sql

2

메타 메일은 metasend 도구를 가지고 있습니다

metasend -f mysqlbackup.sql.gz -t backup@email.com -s Backup -m application/x-gzip -b

이것은 거의 모든 곳에 설치되었지만 거의 사용되지 않았습니다. 오랫동안 유지 관리되지 않았으며 (아직 AFAIK 임) 많은 플랫폼의 사실상 표준 도구 세트에서 제거되었습니다 .
tripleee 2018 년

2

나는 사용했다

echo "Start of Body" && uuencode log.cfg readme.txt | mail -s "subject" "a@b.c" 

그리고 이것은 나를 위해 잘 작동했습니다 ....


1

나는 보통 RHEL에서 mail 명령 만 사용합니다. 나는 mailx를 시도했고 꽤 효율적입니다.

mailx -s "Sending Files" -a First_LocalConfig.conf -a
Second_LocalConfig.conf Recipient@myemail.com

This is the content of my msg.

.

1

나를위한 가장 짧은 방법은

file=filename_or_filepath;uuencode $file $file|mail -s "optional subject" email_address

예를 들어

file=your_sql.log;gzip -c $file;uuencode ${file}.gz ${file}|mail -s "file with magnets" ph.gachoud@gmail.com

좋은 부분은 Ctrl + r 로 다른 파일을 보내도록 호출 할 수 있다는 것입니다 ...


중괄호는별로 좋지 않지만 완전히 이식 가능하려면 변수 주위에 큰 따옴표를 사용해야합니다. 또한 참조 stackoverflow.com/questions/10067266/...
tripleee

1

소스 머신에서

mysqldump --defaults-extra-file=sql.cnf database | gzip | base64 | mail me@myemail.com

대상 컴퓨터에서. 수신 된 메일 본문을 db.sql.gz.b64 로 저장하십시오 . 그때..

base64 -D -i db.sql.gz.b64 | gzip -d | mysql --defaults-extra-file=sql.cnf

0

내 2 센트를 추가하기 위해 내 자신의 PHP 스크립트를 작성합니다.

http://php.net/manual/en/function.mail.php

해당 페이지의 예제에서 첨부 파일을 작성하는 방법은 여러 가지가 있습니다.


2
모든 서버에 PHP가 설치되어 있지는 않습니다. "자신의 스크립트 작성"경로를 실제로 내려 가려면 일반적으로 기본적으로 사용 가능한 perl 또는 python이 훨씬 더 적합합니다.
exhuma

sh훨씬 더 편재합니다. 좋은 예가있는 답변이있는 중복 질문이 있습니다. 여기 내 꺼야
tripleee

0

mailx있는가 -a첨부 해주기 옵션을 선택합니다.


2
"-a"옵션은 헤더 용입니다
Yves Martin

man mail [x], 10/9/10의 버전 12.5 (몇 년 전)에 -a 파일이라고 명확하게 표시되어 있습니다. 파일에 지정된 파일을 메시지에 첨부하십시오
.`

4
일부 버전 mailx. 두 가지 구현이 있다고 생각합니다. 하나 -a는 첨부 파일이고 다른 하나 는 헤더입니다.
exhuma

1
우분투의 mailx 버전은 GNU에서 왔으며 거기에 헤더를 추가한다는 의미입니다. manpages.ubuntu.com/manpages/lucid/en/man1/mailx.1.html 어떤 시스템과 어떤 mailx가 첨부됩니까?
nealmcb

3
새로운 구현에서 "-a"는 헤더 용이고 "-A"는
어치먼트

0

이메일을 보내는 방법은 아니지만 온라인 Git 서버 (예 : Bitbucket 또는 유사한 서비스)를 사용할 수 있습니다.

이런 식으로 git push명령 을 사용할 수 있으며 모든 버전은 압축되고 체계적인 방식으로 저장됩니다.


0

이것이 CentOS에서 하나의 큰 로그 파일로 수행하는 방법입니다.

MAIL="`whereis mail | awk '{print $2}'`"
WHOAMI="`whoami`"
HOSTNAME="`hostname`"
EMAIL"your@email.address"
LOGDIR="/var/log/aide"
LOGNAME="`basename "$0"`_`date "+%Y%m%d_%H%M"`"
# Arhiveerime ning kui hästi, saadame edasi:
/bin/tar -zcvf ${LOGDIR}/${LOGNAME}.tgz "${LOGDIR}/${LOGNAME}.log" > /dev/null 2>&1
if [ $? -eq 0 ]; then
    cd ${LOGDIR}
    # This works too. The message content will be taken from text file below
    # echo 'Hello!' >/root/scripts/audit_check.sh.txt
    # echo "Arhiivifail manuses" | ${MAIL} -s "${HOSTNAME} Aide report" -q /root/scripts/audit_check.sh.txt -a ${LOGNAME}.tgz -S from=${WHOAMI}@${HOSTNAME} ${EMAIL}
    echo "Arhiivifail manuses" | ${MAIL} -s "${HOSTNAME} Aide report" -a ${LOGNAME}.tgz -S from=${WHOAMI}@${HOSTNAME} ${EMAIL}
    /bin/rm "${LOGDIR}/${LOGNAME}.log"
fi

왜 정의하고 WHOAMI하고 HOSTNAME 두 번?
David C. Rankin

이것은 몇 가지 쉘 코딩 스타일 실수가 있습니다. shellcheck.net전부 는 아니지만 일부를 지적합니다.
tripleee

0

파일이 텍스트 인 경우 다음과 같이 본문에서 가장 쉽게 보낼 수 있습니다.

sendmail recipient@example.com < message.txt

1
첨부 파일이나 메시지 본문으로 보내지 않습니다. Sendmail은 입력이 완전하고 올바른 RFC5322 전자 메일 메시지 일 것으로 예상되며 그렇지 않은 경우 흥미로운 방식으로 실패 할 수 있습니다.
tripleee

0

mailx 명령 사용

 echo "Message Body Here" | mailx -s "Subject Here" -a file_name user@example.com

sendmail 사용

#!/bin/ksh

fileToAttach=data.txt

`(echo "To: user@company.com"
  echo "Cc: user@company.com"
  echo "From: Application"
  echo "Subject: your subject"
  echo  your body
  uuencode $fileToAttach $fileToAttach
  )| eval /usr/sbin/sendmail -t `;

1
sendmail은 좋은 예입니다. 여기서 찾았습니다.
Honza P.

"본문"시작시 빈 줄이 필요합니다. 그렇지 않으면 본문이 머리글에서 사라지거나 메시지가 완전히 중단 될 수 있습니다. 또한 uuencodeMIME에 찬성하여 피하는 방법 에 대한 메모를 참조하십시오 .
tripleee 2018 년

그리고 eval전체 장치 주변 의 괴물 과 미스터리 배경은 완전히 불필요합니다.
tripleee 2018 년

0

Mailutils는 이것을 케이크 한 조각으로 만듭니다.

echo "Body" | mail.mailutils -M -s "My Subject" -A attachment.pdf mail@example.org
  • -A file 파일을 첨부
  • -M 첨부 파일과 일반 텍스트 본문을 가질 수 있도록 MIME을 활성화합니다.

아직 설치되지 않은 경우

sudo apt install mailutils

0

메일 명령 옵션 (로 확인 man mail) 및 수행 할 수있는 버전 에 따라

echo yourBody|mail -s yoursubject -A /your/attachment/file john@doe.com


이것은 새로운 것을 추가하지 않고 기존 답변을 복제하는 것으로 보입니다. 가장 주목할만한 -A옵션은 내 대답에서 지적한 것처럼 GNU mailutils버전과 mail@rumpel의 것입니다.
tripleee

-1

음소거가 작동하지 않거나 설치되지 않은 경우 다음을 시도하십시오.

*#!/bin/sh

FilePath=$1
FileName=$2
Message=$3
MailList=$4

cd $FilePath

Rec_count=$(wc -l < $FileName)
if [ $Rec_count -gt 0 ]
then
(echo "The attachment contains $Message" ; uuencode $FileName $FileName.csv ) | mailx -s "$Message" $MailList
fi*
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.