56

나는 리눅스 쉘을 운영하는 서버에있다. 수신자에게 간단한 파일을 메일로 보내야합니다. 이를 수행하는 방법, 선호하는우편명령?

최신 정보: mutt를 대신 사용하여 좋은 해결책을 얻었습니다.

$ echo | mutt -a syslogs.tar.gz admin@domain.org

13 답변


47

uuencode를 사용하는 예제 :

uuencode surfing.jpeg surfing.jpeg | mail sylvia@home.com

참고 문헌 :

http://www.shelldorado.com/articles/mailattachments.html


  • uuencode가 " 기본값 " GNU 도구? 내 상자에없는 것 같습니다. - Seiti
  • 참고 자료는 정말 유용했습니다! 감사! - Seiti
  • @Seiti : uuencode는 sharutils의 일부이며 GNU 소프트웨어입니다. 우분투 패키지도 sharutils라고합니다.gnu.org/software/sharutils - Janus Troelsen
  • uuencode 첨부 파일을 허용하는 수신자에게만 적용됩니다. - Stefan Schmidt
  • 이것은 1990 년대 초반에 고착 된 생태계에 대한 좋은 해결 방법이지만 현대 세계에서 선호되는 솔루션은 MIME으로 전환하는 것입니다. 이 솔루션은mutt그것은 멋지게 그리고 합리적으로 이식 가능합니다. - tripleee

20

$ echo | mutt -a syslogs.tar.gz admin@domain.org

그러나 메일 (또는 mailx)이 아닌 mutt를 사용합니다.


  • 이것은 나를 위해 그것을했다 : D - yuudachi
  • QUITE이 (가) 나를 위해 일하지 않았습니까? 논쟁의 순서가 달랐다. 효과가 있었던 것은 :echo | mutt admin@domain.org -a syslogs.tar.gz. 나는 1.5.20 버전의 mutt를 사용하고있다. - Marcus
  • 그것은 유닉스에서 메일 서버로 로그를 보내는 나를 위해 작동합니다. 감사 - Hongtao

18

mail내가 시도한 현대 리눅스의 모든 버전에서 그렇게 할 수있다. 다른 소프트웨어 필요 없음 :

matiu@matiu-laptop:~$ mail -a doc.jpg someone@somewhere.com
Subject: testing

This is a test
EOT

ctrl + d를 입력하면됩니다.


  • 별로 정확하지 않습니다. 버전이있다.mail이것을지지하지만 분명히 "평범하지 않은mail" 오히려 현대화 된 버전이나 변형 된 것입니다. 사용중인 버전과 플랫폼을 지정하면 도움이됩니다. - tripleee
  • 이것은 우분투 14.04에서 Heirloom mailx version 12.5 6/20/2010을 사용하고 있습니다. 메모리에서 그것은 centos 6, 우분투 12.04 및 centos 7에서도 작동합니다. - matiu
  • 대화 형 모드에서이 작업을 수행 할 수 있었지만이 스크립트 버전이 있는지 궁금해하고 있었습니까? - Nap
  • 사용자 상호 작용이 필요하지 않도록하려면 : echo 이것은 테스트입니다 | mail -a doc.jpg -s "testing" someone@somewhere.com - matiu
  • RHEL6.8 메일 버전 사용 : 12.4 7/29/08 - SidJ

12

mailx도움이 될 수도 있습니다. mailx 맨 페이지에서 :

-a file
     Attach the given file to the message.

아주 쉽지, 그렇지?


  • 이것은 우분투의 mailx가 아니라는 점에 유의하십시오. 저것을 사용하여,-a방법Specify additional header fields on the command line such as "X-Loop: foo@bar" etc. You have to use quotes if the string contains spaces. This argument may be specified more than once, the headers will then be concatenated. - Janus Troelsen
  • 나의mailx지원하지 않습니다.-a(CentOS의 mailx-8.1.1-44.2.2 패키지) - einpoklum
  • 광산은 지원하지 않습니다.-a어느 쪽이든 (OS X 10.7.5) - Stefan Schmidt

11

내 대답은 메일 외에 base64가 필요하지만 uuencode 버전 중 일부는 -m을 사용하여 base64를 수행 할 수도 있고 mime을 잊어 버리고 일반 uuencode 출력을 사용할 수도 있습니다.

   FROM=me@mydomain.com
   TO=someone@mydomain.com
   SUBJECT="Auto emailed"
   MIME="application/x-gzip"  #Adjust this to the proper mime-type of file
   FILE=somefile.tar.gz
   ENCODING=base64  
   boundary="---my-unlikely-text-for-mime-boundary---$$--" 

   (cat <<EOF
    From: $FROM
    To: $REPORT_DEST
    Subject: $SUBJECT
    Date: $(date +"%a, %b %e %Y %T %z")
    Mime-Version: 1.0
    Content-Type: multipart/mixed; boundary="$boundary"
    Content-Disposition: inline

    --$boundary
    Content-Type: text/plain; charset=us-ascii
    Content-Disposition: inline

    This email has attached the file

    --$boundary
    Content-Type: $MIME;name="$FILE"
    Content-Disposition: attachment;filename="$FILE"
    Content-Transfer-Encoding: $ENCODING

    EOF
    base64 $FILE
    echo ""
    echo "--$boundary" ) | mail


  • 어떤 이유로 mutt를 사용할 때 암호화 된 첨부 파일은 기본적으로 ~ 2MB 첨부 파일로 제한되는 인코딩시 400-500 % 증가합니다. 따라서이 메소드를 사용하여 base64로 인코딩 된 첨부 파일을 전자 메일로 작성해야했습니다.sendmail -t대신. - Kyle MacFarlane
  • 좋은 대답 - 나는 고양이가 부분을 추가하는 것을 좋아한다. - bgs
  • 적절한 MIME 도구에 액세스 할 수 없지만 손으로 MIME 구조를 결합하면 빨리 지쳐 버리는 것이 좋습니다. 일회성 이상이 필요하다면이 단계들을 캡슐화하는 도구를 찾고 싶을 것입니다. - tripleee
  • 그리고 귀하의mailMIME 입력을 막지는 못하지만 전환 할 수 있습니다.| sendmail -oi -t이 경우 파이프 라인의 끝에서; 해당 기능을 필요로하지 않습니다.mail래퍼는 더 이상이 시점에서 당신을 제공합니다. - tripleee
  • 마지막 줄에는echo "--$boundary--"닫는 괄호 앞에 두 개의 대시가 끝에 붙어 최종 닫는 경계로 표시됩니다. - tripleee

7

mailx -a /path/to/file email@address

대화 형 모드 ( "제목 :"과 빈 줄을 묻는 메시지가 표시됨)로 들어가서 주제를 입력 한 다음 본문을 입력하고 적중Ctrl+(EOT)를 마칩니다.


  • Mac 10.7에서이 작업을 수행하는 중에 오류가 발생합니다.mailx: illegal option -- a - isomorphismes
  • OSX에는 리눅스와 같이 현대적인 업데이트 된 CLI 유틸리티가 많이 없기 때문에 그 점이 다릅니다. homebrew 또는 macports를 사용하여 coreutils 설치 - f0ster
  • @ f0stermailxGNU coreutils의 일부가 아닙니다. 당신은 아마 버전을 찾을 수 있습니다mailx이 사용법을 지원하는 OSX에 대해서는 하나의 링크가 없지만 이것은 전혀 도움이되지 않습니다. 여러 버전이 있으며이 버전 중 상당수는이 용도를 지원하지 않습니다. - tripleee

4

mpack -a -s "이봐,이게 너의 보고서 역할을하니?" -m 0 -c application / x-tar-gz survey_results.tar.gz hesco@example.net

mpack과 munpack은 mailx를 확장하기 위해 metamail과 함께 작동합니다. html 마크 업과 첨부 파일이 어지럽게 얽힌 현대적인 이메일을 유용하게 사용하십시오.

이 4 가지 패키지를 함께 사용하면 처리 할 수 있습니다. gui 메일 클라이언트에서 할 수있는 모든 전자 메일.


  • 이것은 나를 위해 일한, 우분투 12.04에서 작동하는 것 외에는 아무것도 보이지 않았다. - Shanmu

2

우분투 10.4를 사용하여, 이것은 mutt 해법이 쓰여지는 방법이다.

echo | mutt -a myfile.zip -- admin@domain.org



1

mutt 나 mailx를 사용하거나 메일이 "-a"를 지원하지 않는다고 말하는 사람들이 많이 있습니다.

첫째, mailutils의 우분투 14.0.4 메일은 다음을 지원합니다.

mail -A filename -s "subject"email@example.com

둘째, "man mail"명령을 사용하고 "첨부"를 검색하여


1

다음은 비정상적인 프로그램 기능에 의존하지 않는 Unix / Linux 설치에 적합한 솔루션입니다. 이는 여러 줄의 메시지 본문, 여러 첨부 파일 및 기타 모든 일반 기능을 지원합니다.mailx.

불행히도, 그것은 한 줄에 들어 맞지 않습니다.

#!/bin/ksh

#Get the date stamp for temporary files
DT_STAMP=`date +'%C%y%m%d%H%M%S'`

#Create a multi-line body
echo "here you put the message body
which can be split across multiple lines!
woohoo!
" > body-${DT_STAMP}.mail

#Add several attachments
uuencode File1.pdf File1.pdf >  attachments-${DT_STAMP}.mail
uuencode File2.pdf File2.pdf >> attachments-${DT_STAMP}.mail

#Put everything together and send it off!
cat body-${DT_STAMP}.mail attachments-${DT_STAMP}.mail > out-${DT_STAMP}.mail
mailx -s "here you put the message subject" nobody@test-address.com < out-${DT_STAMP}.mail

#Clean up temporary files
rm body-${DT_STAMP}.mail
rm attachments-${DT_STAMP}.mail
rm out-${DT_STAMP}.mail



0

리눅스에서 나는 제안 할 것이다.

#FILE_TO_BE_ATTACHED = abc.gz

uuencode abc.gz abc.gz > abc.gz.enc #This is optional, but good to have
                                    #to prevent binary file corruption.
                                    #also it make sure to get original 
                                    #file on other system, w/o worry of endianness

#Sending Mail, multiple attachments, and multiple receivers.
echo "Body Part of Mail" | mailx -s "Subject Line" -a attachment1 -a abc.gz.enc "youremail@domain.com anotheremail@domain.com"

메일 첨부 파일을 받으면 uuencode를 사용했다면 uudecode가 필요합니다.

uudecode abc.gz.enc

#uuencode의 두 번째 인수와 같은 이름의 파일을 원본으로 생성합니다.


  • 네가mailx지원하는-aMIME 첨부 파일을 포함하기 때문에 별도로 필요가 없습니다.uuencode그들. 첨부는 다음과 같은 적합한 콘텐츠 전송 인코딩으로 콘텐츠를 래핑합니다.base64필요한 경우 - 사실휴대 가능하고 견고한uuencode,뿐만 아니라 훨씬 더 유용합니다. - tripleee

0

mailx로 할 수있는 일 :

mailx -s "My Subject"  -a ./mail_att.csv -S from=noreply@foo.com  recipient@bar.com < ./mail_body.txt

이것은 GNU 리눅스 서버에서 훌륭하게 작동했지만 유감스럽게도 devx 환경은 구식 BSD 버전의 mailx 만있는 Mac OsX입니다. 일반적으로 Coreutils를 사용하여 Mac BSD보다 나은 유닉스 명령을 얻지 만 mailx는 Coreutils에 없습니다.

관련없는 스레드에서 노트 필 드에서 해결책을 찾았습니다 (https://serverfault.com/questions/196001/using-unix-mail-mailx-with-a-modern-mail-server-imap-instead-of-mbox-files)에서 Heirloom mailx OSX 바이너리 패키지를 다운로드했다.http://www.tramm.li/iWiki/HeirloomNotes.html. 위의 명령 구문을 처리 할 수있는 더 많은 기능을 갖춘 mailx가 있습니다.

(가난한 교차 연결 또는 기여에 대한 사과, 나는이 사이트를 처음 사용합니다.)


-1

나는 사용한다mailutils혼란스러운 부분은 파일을 첨부하기 위해 자본 A 매개 변수를 사용해야한다는 것입니다. 아래는 예제입니다.

echo 'here you put the message body' | mail -A syslogs.tar.gz admin@domain.org

메일 명령이 mailutils에서 온 것인지 알고 싶다면 "mail -V"를 실행하십시오.

root@your-server:~$ mail -V
mail (GNU Mailutils) 2.99.98
Copyright (C) 2010 Free Software Foundation, inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

연결된 질문


관련된 질문

최근 질문