从 bash 脚本发送电子邮件

Sending e-mail from bash script

我正在使用 Ubuntu 18.04 LTS、GNU Mailutils 3.4 和 MSMTP 1.6.6 从 Bash 脚本(and/or 测试从命令行)。我在服务器 运行 16.04 时使用 BSD-Mailx,但升级到 18.04 导致 Mailx 无法发送附件。

我尝试了多种格式的 mail 命令以将文本传递到电子邮件正文,但它们似乎都失败了。一些例子:

echo "This is the body of the e-mail" | mail address@example.com -s "This is the subject" -A /file/path/file.txt

我得到的只是带有空电子邮件的附件。

mail address@example.com -s "This is the subject" -A /file/path/file.txt <<< echo "This is the body of the e-mail"

同样,带有附件的空电子邮件。

我也试过用命令末尾的电子邮件地址,它仍然只给出一个带有附件的空电子邮件。

我已经尝试了上面的其他几个迭代,例如单个 < 重定向,| 命令末尾的文本,当然失败了,但只是想猜测格式正确。

还有其他人解决了这个问题吗?

使用 mailutils

我认为问题在于,如果您指定 -A,stdin 将被忽略:https://savannah.gnu.org/bugs/?54992

您可以将正文作为附加附件包含在内:

echo "This is the body of the e-mail" |\
mail address@example.com \
    -s "This is the subject" \
    --skip-empty-attachments \
    --content-type text/plain -A - \
    -A /file/path/file.txt

使用 mutt

虽然我不认为 mutt 真的适合编写脚本,但看起来应该可以:

echo "this is the body" |\
mutt \
  -s "this is the subject" \
  -a /file/path/file.txt -- \
  address@example.com

感谢@jhnc 我指点我https://savannah.gnu.org/bugs/?54992. I posted my issue there and received a response that this was a bug which has now been fixed in Mailutils 3.5-3 according to this discussion https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=918806#22

有一个变通方法,同时添加 --mime 属性,如下所示:

echo "body text" | /usr/bin/mail --mime -s "some subject" -A "somefile.csv" my@email.com

显然,我需要在 'Google foo' 和 Whosebug 参与方面做一些工作。我希望这是 "right" 回答我最初问题的方式。