【发布时间】:2020-03-18 15:43:30
【问题描述】:
我正在尝试设置在某些事件中自动发送通知邮件。 我想传递一个消息正文并附加一个单独的日志文件。
我可以使用以下命令传递正文:
mymessage="test message\nwhatever\n"
echo -e "$mymessage"| mailx -s "testmail" -r "sender@mymail.de" "recepient@mymail.de"
在这种情况下,我会收到一封电子邮件,正文中包含我的消息
现在,如果我想添加一个日志文件作为附件,我能找到的所有教程以及 mailx 帮助功能都暗示我应该简单地使用“-A”(用于附件)参数
mymessage="test message\nwhatever\n"
echo -e "$mymessage"| mailx -A /home/me/myattachment.txt -s "testmail" -r "sender@mymail.de" "recepient@mymail.de"
但是,如果我这样做,我的正文将被忽略(如果我的附件是文本文件,它会同时用作附件和正文)。
我想这与存在不同版本的 mailx 的事实有关,它们的工作方式都不同?我的版本是“mailx (GNU Mailutils) 3.4”,使用 sudo apt install mailutils 从最新 ubuntu 服务器版本的标准存储库安装。
如何在附件中单独指定正文?
编辑:请注意,似乎有不同版本的 mailx 似乎可以按照教程所暗示的那样工作。在许多版本中,有一个“-a”选项而不是我的“-A”。我的版本没有这个选项。然而,我的版本是在安装 maulutils 时从 ubuntu 中的标准存储库安装的版本。如何获取其他版本?
【问题讨论】:
-
当然可以。正确的选项是
-a file Attach the given file to the message.NOT-A name Executes an account command (see below) for name after the startup files have been read. -
嗯,这正是我上面所说的问题。显然有不同版本的mailx。在您的版本(以及许多教程的版本)中,“-a”用于附件。在我的版本中,“-A”用于附件,而“-a”用于指定标题。这是我使用“-a”而不是“-A”时得到的结果:```mailx: Invalid header: /home/me/myattachment.txt' ' '
-
这让我发疯了,因为这是来自 ubuntu 存储库的 mailutils,但显然其他每个人都有一个完全不同的版本和不同的参数?
-
所有版本都是来自原始伯克利 mailx 的分叉。当前开发中仍然存在的一个是
S-nail,请参见,例如S-nail - ArchWiki。如果您使用带有-A选项的附件作为附件,它可能已经停止开发十多年了。检查您的mailx来自的包(可能是Berkeley mail、heirloom-mailx或其他一些变体)无论它是什么,我都会删除它并安装s-nail或至少heirloom-mailx——两者都支持-a附件。 -
是的! -- 生活会更轻松
:)如果推荐 mailutils 的方法不是来自 2005 年或更早的版本,我也不会感到惊讶——所有原始的方法现在都变得有点长了....
标签: linux bash ubuntu unix mailx