在 Automic 12 bash 中,mailx 正文中的特殊字符导致正文作为二进制文件附加

In Automic 12 bash, special characters in mailx body result in body being attached as a binary file

我正在尝试通过 Automic Workload Automation 12.0 的 bash 作业使用 mailx 发送电子邮件。消息需要有一个特殊字符,在本例中为百分号“°”。

对于此示例,消息应包含正文 This is the ° sign.

我正在使用此代码发送消息。 printf '\xB0' 打印 ° 符号。

(
  printf 'This is the '
  printf '\xB0'
  printf ' sign.'
) | mailx [etc]

如果我将其直接复制并粘贴到 bash 终端,电子邮件发送正常,邮件正文中印有特殊字符。

但是,当我在 Automic bash 作业中使用相同的代码时,电子邮件正文是空白的。附件中有一个名为 ATT00001.bin 的文件。如果我使用 notepad.exe 打开 ATT00001.bin,该文件包含本应在正文中的文本,This is the ° sign. 字符完全按照正文中应有的方式打印。

以下内容在 Automic 中使用时会导致使用正确的正文发送消息。没有附加文件。所以很明显,特殊字符导致了 Automic 的这个问题。

(
  printf 'This is the '
  printf 'placeholder'
  printf ' sign.'
) | mailx [etc]

有谁知道为什么会这样,或者如何解决?

Mailx 是一个进化的 MUA。对于仅发送邮件,如果您使用 sendmail,您可以构建自己的邮件 header:

/usr/sbin/sendmail destuser@desthost <<eomail
To: destuser@desthost
Subject: Any interesting thing
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit

This is the ° sign
eomail

或者您可以使用 html 编码:

/usr/sbin/sendmail destuser@desthost <<eomail
To: destuser@desthost
Subject: Any interesting thing
MIME-Version: 1.0
Content-Type: text/html; charset="ASCII"
Content-Transfer-Encoding: 8bit

<html><body>This is the &deg; sign</body></html>
eomail

注意,这里只使用 ASCII 字符!