如何在Linux上使用mail命令附加文件?

Sei*_*iti 59 unix linux email shell

我在运行Linux shell的服务器上.我需要将一个简单的文件邮寄给收件人.怎么做,优先使用mail命令?

更新:得到一个很好的解决方案,使用mutt代替:

$ echo | mutt -a syslogs.tar.gz admin@domain.org
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 49

使用uuencode的示例:

uuencode surfing.jpeg surfing.jpeg | mail sylvia@home.com
Run Code Online (Sandbox Code Playgroud)

和参考文章:

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

  • @Seiti:uuencode是sharutils的一部分,它是GNU软件.Ubuntu包也称为sharutils.http://www.gnu.org/software/sharutils/ (4认同)
  • uuencode是一个"默认"GNU工具吗?我的盒子似乎没有它. (2认同)
  • 这仅适用于允许使用uuencoded附件的收件人 (2认同)

Sei*_*iti 20

$ echo | mutt -a syslogs.tar.gz admin@domain.org
Run Code Online (Sandbox Code Playgroud)

但它使用mutt,而不是mail(或mailx).

  • 没有QUITE适合我.争论的顺序是不同的.有用的是:`echo | mutt admin@domain.org -a syslogs.tar.gz`.我正在使用mutt版本1.5.20. (12认同)

mat*_*tiu 20

mail在我试过的每个版本的现代Linux上都可以做到.不需要其他软件:

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

This is a test
EOT
Run Code Online (Sandbox Code Playgroud)

完成输入后按ctrl + d.

  • 不太准确.有一些版本的`mail`支持这个,但它们当然不是"普通的旧邮件",而是一些现代化的版本或变体.如果您在哪个平台上指定要使用的版本,将会有所帮助. (3认同)
  • 使它不需要用户交互:echo这是一个测试| 邮件-a doc.jpg -s“测试”某人@ somewhere.com (2认同)

Dav*_*low 12

mailx也可能有所帮助.来自mailx手册页:

-a file
     Attach the given file to the message.
Run Code Online (Sandbox Code Playgroud)

很简单吧?

  • 请注意,这不是Ubuntu中的mailx.使用那个,`-a`表示`在命令行中指定其他头字段,例如"X-Loop:foo @ bar"等.如果字符串包含空格,则必须使用引号.可以多次指定此参数,然后将标题连接起来 (10认同)
  • 我的`mailx`不支持`-a`(CentOS上的mailx-8.1.1-44.2.2包) (5认同)
  • 我也不支持`-a`(OS X 10.7.5) (2认同)

njs*_*jsf 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
Run Code Online (Sandbox Code Playgroud)

  • 最后一行应该有'echo' - $ boundary - "`在结束括号之前,在末尾有两个破折号,将其标记为最终的结束边界. (2认同)

小智 7

mailx -a /path/to/file email@address
Run Code Online (Sandbox Code Playgroud)

您可能会进入交互模式(它会提示您使用"主题:",然后是空白行),输入主题,然后输入正文并点击Ctrl+ D(EOT)完成.