在 bash 脚本中发送邮件时读取字符串消息中的 HTML
Posted
技术标签:
【中文标题】在 bash 脚本中发送邮件时读取字符串消息中的 HTML【英文标题】:Reading HTML in a string message while sending mail in bash script 【发布时间】:2020-02-09 09:14:27 【问题描述】:我有用于向 Linux 中的某个用户发送电子邮件的脚本。我想在 bash 中将字符串内容读取为 html,但 bash 无法将字符串读取为 HTML。
脚本开始:
body ='
Dear $user,
<p> The password for your account is due to expire on in 14 days. and must be changed.<br>
<p>You can reset your password by visiting the Password Reset Portal.</p>
<p><a href="https://google.com/">Google</a> </p>
<p>You can contact the XYZ Team in case of any issue. </p>'
#send email
user='ABC'
email="abc@gmail.co."
from="xyz@gmail.com"
echo $body1 | mail -s test -r $from $email
我希望我给用户的消息如下所示,并将字符串读取为 html
Dear ABC,
The password for your account is due to expire on in 14 days. and must be changed.
You can reset your password by visiting the Password Reset Portal.
Google
You can contact the XYZ Team in case of any issue
但是 bash 将正文作为字符串而不是 HTML 来读取,如下所示
Dear ABC,
<p> The password for your account is due to expire on in 14 days. and must be changed.</p><br>
<p>You can reset your password by visiting the Password Reset Portal.</p>
<p><a href="https://google.com/">Google</a> </p>
<p>You can contact the XYZ Team in case of any issue. </p>
请任何人都可以帮助我。
我已经尝试了链接Sending HTML mail using a shell script的答案,但我没有成功。
【问题讨论】:
与this重复? How to send HTML email using linux command line的可能重复 我尝试使用解决方案***.com/questions/2591755/…,但它没有用 【参考方案1】:第一个问题是mail
是许多不同程序的通用名称(取决于操作系统和发行版),有时mail
是指向其他程序(例如mailx)的符号链接。最终结果是,如果没有关于您正在使用的名为 mail
的程序的更多详细信息,将很难解决您的问题。这反过来可以使脚本的(半)可移植性成为真正的 b*tch(即使在同一域中的主机之间)。由于这些原因,当我需要对电子邮件正文进行一些特殊格式化时,我倾向于使用sendmail
。
第二个问题是大多数mail
程序需要被指示解释(html)标签。这通常包括(在电子邮件顶部)添加子句 MIME-VERSION: 1.0
和 Content-Type: text/html
。
你可以从一个简单的例子开始:
body="Dear $user,
<p> The password for your account is due to expire on in 14 days. and must be changed.<br>
<p>You can reset your password by visiting the Password Reset Portal.</p>
<p><a href=\"https://google.com/\">Google</a> </p>
<p>You can contact the XYZ Team in case of any issue. </p>"
email="abc@gmail.co."
from="xyz@gmail.com"
echo "Subject: My test subject
To: $email
From: $from
MIME-Version: 1.0
Content-type: text/html
<html><body>
$body
</body></html>" | /usr/sbin/sendmail -t
注意:验证主机上 sendmail
的路径。
注意:如果您没有安装sendmail
,那么这将是一个完整的“另一篇文章”,因为系统管理员需要设置一个配置文件来告诉sendmail
如何处理(电子邮件)邮件消息(例如,什么是smtp 服务器的名称?)。
使用这个基本的包装器,您应该能够根据需要添加更多的 html 标记。
【讨论】:
以上是关于在 bash 脚本中发送邮件时读取字符串消息中的 HTML的主要内容,如果未能解决你的问题,请参考以下文章
sh 一个非常基本的BASH脚本,当一个新的在线上传租约符合我的期望时,它会自动通过电子邮件发送给我。在2015年真正的estat
如何使用 mail 或 mailx 命令从 bash 脚本以 HTML 格式发送电子邮件(Centos/Redhat)