Ubuntu 没有完整路径作为文件名的 mailx 附加文件

Ubuntu mailx attach file without the whole path as the filename

我使用以下命令在 Ubuntu 服务器中发送电子邮件。这似乎附加了 testreport.csv 文件,其完整路径作为文件名。

 echo "This email is a test email" | mailx -s 'Test subject' testemail@gmail.com -A "/home/dxduser/reports/testreport.csv"

我怎样才能阻止这种情况发生?是否可以附加文件的真实名称?在这种情况下,“testreport.csv”?

我在 Ubuntu 20.04

上使用 mailx (GNU Mailutils) 3.7 版本

编辑:有人可以解释一下为什么我对这个问题投了反对票吗?

周围有 multiple different mailx implementations 个,所以具体的工作取决于您安装的版本。

但是,作为一种快速而肮脏的解决方法,您可以暂时 cd 进入该目录(前提是您具有对其的执行权限):

(  cd /home/dxduser/reports
   echo "This email is a test email" |
   mailx -s 'Test subject' testemail@gmail.com -A testreport.csv
)

圆括号运行子shell中的命令,这样cd的效果只会影响那个子shell,以及程序的其余部分可以像以前一样进行。

如果您的 mailx 实现在文件名中放入 Content-Disposition: 并包含文件的完整路径,我会将其视为错误。

另一种方法是使用不同的客户端。如果您无法安装,例如mutt,创建一个简单的 shell 脚本包装器来围绕 CSV 文件的 base64quoted-printable 编码构建 MIME 结构并不是特别困难,但你必须知道什么你在做什么简而言之,

( cat <<\:
Subject: test email
Content-type: text/csv
Content-disposition: attachment; filename="testreport.csv"
From: me <myself@example.org>
To: you <recipient@example.net>
Content-transfer-encoding: base64

:
base64 </home/dxduser/reports/testreport.csv
) | /usr/lib/sendmail -oi -t

显然你必须安装 base64sendmail,并且可能调整到 sendmail 的路径(或者如果它在你的 PATH 中则忽略它) .