如何在 shell 脚本中将文本设为粗体并使用 SMTP 发送输出

问题描述 投票:0回答:2

我想将文本加粗并使用 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]

这是粗体(粗体),但这不是“。

这是邮件通知。

linux shell smtp ansi-escape tput
2个回答
2
投票

tput
是一个使用
terminfo(3)
(或
termcap(3)
,具体取决于系统)来获取转义序列的命令,您的交互式终端 使用该转义序列在输出上生成粗体字符。这不适用于电子邮件,因为接收器上的终端可能不会相同(大多数情况下不会,因为通常人们使用图形工具阅读电子邮件,而不是基于文本的终端)

电子邮件中没有“粗体文本”的概念。 HTML 或其他文档格式(例如 RTF、Word doc、Word docx 等)中存在粗体文本,因此大多数邮件阅读器中不会出现粗体文本(许多文本阅读器会避免出现转义序列)消息,这样它们就不会混淆实际的文本显示) 关注消息的某些部分真的那么重要吗?你能用一些不太依赖设备的东西来标记它吗 *****>>>>像这样

如果您坚持发送个人终端转义序列来指示粗体文本,而该文本在世界其他任何地方都不会显示为粗体,那么您会收到很多来自人们的投诉,他们的屏幕被您的消息弄乱。如果这些是自动发送的,那就更糟糕了。<<<<*****?


0
投票
tput bold

生成)添加到文本中并通过

mailx
或类似方式发送,则邮件程序可能会发现您发送的文本不是纯 ASCII 并推断这可能是二进制文件文件。

因此,文件将作为邮件的二进制部分发送。

© www.soinside.com 2019 - 2024. All rights reserved.