如何从命令行通过电子邮件发送附件

con*_*fin 32 email command-line files

是否可以从命令行通过电子邮件发送附件?

如果可能的话,我想要一些简单的东西:

mail -a myfile.txt -t me@example.com -s "Here's my file"
Run Code Online (Sandbox Code Playgroud)

msw*_*msw 19

在 Ubuntu 存储库中的所有邮件用户代理中,mutt似乎是具有长期支持的命令行 MUA。

根据手册,您可以执行以下操作:

mutt -a myfile.txt -s "Here's my file" -- me@example.com
Run Code Online (Sandbox Code Playgroud)

除了它不会去任何地方,因为一个人还需要一个邮件传输代理。流行的有:

  • 可敬的sendmail
  • 后缀
  • 进出口4
  • 邮箱
  • 空邮者

Canonical 似乎唯一支持的是 postfix (感谢 Steve 的更正)和exim4

也可以说xdg-email也是一个合适的 Ubuntu MUA,但它是一个简单的前端,它只代表你执行你喜欢的 MUA

如果您想了解哪种 MTA 可能适合您的使用,请在此处提出另一个问题。


小智 13

我在发送附件文件时也遇到了麻烦。当我发送没有附件的电子邮件时,它成功但没有附件。sendemail, mutt, mail, mailx,uuencode命令存在此问题。

幸运的是,它被有趣地解决了。我使用 Gmail 发送电子邮件。您可以配置您的 gmail 以通过终端中的命令发送电子邮件,如 http://www.linuxandlife.com/2013/01/send-email-from-linux-terminal.html 所述

您可以使用以下方式发送文本电子邮件:

mail -s "hello" RECEIVE@mail.com < /home/masoud/YOURFILE.txt 
Run Code Online (Sandbox Code Playgroud)

但您不能发送与附件相同的文件,如下所示:

mail -s "hello" RECEIVE@mail.com -a /home/masoud/YOURFILE.txt
Run Code Online (Sandbox Code Playgroud)

或者:

mail -s "hello" -a /home/masoud/YOURFILE.txt RECEIVE@mail.com
Run Code Online (Sandbox Code Playgroud)

终于明白了,只有这种格式才能发附件:

echo "your message here" | mail -s "title" -a /home/masoud/YOURFILE.txt RECEIVE@mail.com
Run Code Online (Sandbox Code Playgroud)

有趣的是,不同之处在于存在“echo”命令。

更新:201808

现在似乎该-a选项已更改为大写 -A以进行附件。的-a似乎是根据不断变化的报头的文档


小智 6

发现最近命令和参数都变了。

如果您想使用此命令发送附件:

mail -s "your subject" you@gmail.com -A /your/attachment/absolute/path < /home/you/message.txt
Run Code Online (Sandbox Code Playgroud)

选项attachment应该是-Awhich 是 CAPITAL A