如何在shell脚本中使文本加粗并使用SMTP发送输出

dphi5xsq  于 12个月前  发布在  Shell
关注(0)|答案(2)|浏览(161)

我想使文本加粗,并使用SMTP作为邮件发送输出。
邮件配置是正确的,我得到邮件。
但是我得到的是一个.bin文件,而不是打印出来的行。
请帮我拿这个。
这是我的代码,使文本加粗

bold=$(tput bold)
normal=$(tput sgr0)

echo "this is ${bold}bold${normal} but this isn't" > test.txt

cat test.txt | mailx -vvv -r "[email protected]" -S smtp="xx.xxx.xxx.xx" [email protected]

这是粗体字,但这不是”。
这是一封邮件通知。

zfciruhq

zfciruhq1#

tput是一个使用terminfo(3)(或termcap(3),取决于系统)获取转义序列的命令,您的交互式终端使用该转义序列在输出中生成粗体字符。这不适用于电子邮件,因为接收器上的终端可能不会相同(大多数情况下不会,因为通常人们使用图形工具阅读电子邮件,而不是基于文本的终端)
电子邮件中没有“粗体文本”的概念。在HTML或其他文档格式(例如,RTF、Word doc、Word docx等),因此粗体文本不会在大多数邮件阅读器中显示(许多文本阅读器将避免消息中的转义序列,因此它们不会混淆实际的文本显示)。
关注消息的某个部分是如此重要吗?你能用一些不太依赖设备的东西来标记它吗?
如果你坚持发送你的个人终端转义序列来指示一个粗体文本,这在世界上任何其他地方都不会出现粗体,你会收到很多人的抱怨,他们的屏幕被你的消息弄得乱七八糟。更糟糕的是,这些都是自动发送的。

2uluyalo

2uluyalo2#

如果您将转义序列(如tput bold产生的转义序列)添加到文本中,并通过mailx或类似的方式发送,邮件程序可能会发现您发送的文本不是纯ASCII,并推断这可能是一个二进制文件。
因此,文件将作为邮件的二进制部分发送。

相关问题