从bash脚本发送电子邮件

时间:2019-03-16 17:40:59

标签: bash ubuntu smtp msmtp

我正在使用Ubuntu 18.04 LTS,GNU Mailutils 3.4和MSMTP 1.6.6从Bash脚本发送电子邮件(包含附件)(和/或从命令行进行测试)。服务器运行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"

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

我也尝试过使用命令末尾的电子邮件地址进行尝试,但该电子邮件地址仍只是带有附件的空电子邮件。

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

其他人有没有发现这个问题?

2 个答案:

答案 0 :(得分:1)

使用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并非真正用于脚本编写,但看起来应该可以:

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

答案 1 :(得分:0)

感谢@jhnc我将我指向https://savannah.gnu.org/bugs/?54992。我在此处发布了我的问题,并收到答复,说这是一个错误,该错误已根据讨论https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=918806#22在Mailutils 3.5-3中进行了修复。

在此期间,有一种解决方法,可以添加--mime属性,如下所示:

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

显然,我的“ Google foo”和Stackoverflow参与需要一些工作。我希望这是回答我最初问题的“正确”方法。