我正在使用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"
同样,带附件的空电子邮件。
我也尝试过使用命令末尾的电子邮件地址进行尝试,但该电子邮件地址仍只是带有附件的空电子邮件。
我已经尝试了上述方法的其他几次迭代,例如单个<
重定向,|
命令末尾的文本,这当然会失败,但只是尝试猜测正确的格式。
其他人有没有发现这个问题?
答案 0 :(得分:1)
我认为问题在于,如果您指定-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参与需要一些工作。我希望这是回答我最初问题的“正确”方法。