从 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" 回答我最初问题的方式。
我正在使用 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" 回答我最初问题的方式。