it-swarm.cn

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

是否可以通过命令行发送附件?

如果可能的话,我想要一些简单的事情:

mail -a myfile.txt -t [email protected] -s "Here's my file"
25
conorgriffin

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

根据 手册 ,你可以做一些完全像:

mutt -a myfile.txt -s "Here's my file" -- [email protected]

除了它不会去任何地方,因为还需要一个邮件传输代理。受欢迎的是:

  • 古老的sendmail
  • 后缀
  • 的exim4
  • qmail的
  • nullmailer

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

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

如果您想了解MTA可能适合您使用的建议,可以在此处打开另一个问题。

18
msw

发送附件文件也遇到了麻烦。当我发送没有附件的电子邮件时,它是成功的但没有附件。使用sendemailmuttmailmailxuuencode命令存在此问题。

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

您可以使用以下方式发送短信:

mail -s "hello" [email protected] < /home/masoud/YOURFILE.txt 

但你不能发送相同的文件作为附件,如下所示:

mail -s "hello" [email protected] -a /home/masoud/YOURFILE.txt

要么:

mail -s "hello" -a /home/masoud/YOURFILE.txt [email protected]

最后,我明白只有这种格式才能发送附件:

echo "your message here" | mail -s "title" -a /home/masoud/YOURFILE.txt [email protected]

有趣的是,区别在于“echo”命令的存在。

更新:201808

似乎-a选项已更改为大写-A现在用于附件。 -a似乎是根据 doc 更改标题

11
Masoud

我发现最近命令和参数已经改变了。

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

mail -s "your subject" [email protected] -A /your/attachment/absolute/path < /home/you/message.txt

选项attachment应为-A,即CAPITAL A

6
Alex

您可能想要发送文件来自Shell,否则使用Thunderbird

在这种情况下,尝试Thunderbird -remote ...很有用 - 假设Thunderbird通常在运行:

该命令将打开正在运行的Thunderbird实例的邮件撰写窗口。
“发件人”地址是您在Thunderbird中配置的默认地址
此外,使用现有的帐户设置,不需要单独的设置。

对于邮件到[email protected]的邮件,主题为“S”,正文为“B”,附件为/some/absolute/file.txt,命令为

Thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='[email protected]',body='B',attachment='/some/absolute/file.txt')"

有两个问题:

附件需要由绝对路径给出,这在实践中很繁琐。可以通过使用readlink -f来解析相对路径来解决这个问题:

Thunderbird -remote "xfeDoCommand(composeMessage,subject='S',to='[email protected]',body='B',attachment='$(readlink -f file.txt)')"

此外,命令是长的。使用Shell脚本或Shell函数,有四个参数:

Thunderbird-compose () {
    Thunderbird -remote "xfeDoCommand(composeMessage,subject='$1',to='$2',body='$3',attachment='$(readlink -f $4)')"
}

使用此功能,命令变为可读:

Thunderbird-compose 'Some Subject' [email protected] 'Body of message' file1

将打开一个Thunderbird“写”带附件的窗口,以及填写的From,To,Subject和正文。在发送之前可以编辑

3
Volker Siegel

debian中的heirloom-mailx包提供了mailx命令,可以轻松发送mime附件。以下为我工作;

 mailx -a attachment.Zip -s subject [email protected]
2
Furkan Mustafa

我想添加另一个答案,用于添加正文和附件。干杯!!

echo "This is the message body" | mutt -a "/path/to/file.to.attach" -s "subject of message" -- [email protected]
0
Anandu M Das