如何使用 mail 或 mailx 命令从 bash 脚本以 HTML 格式发送电子邮件(Centos/Redhat)
Posted
技术标签:
【中文标题】如何使用 mail 或 mailx 命令从 bash 脚本以 HTML 格式发送电子邮件(Centos/Redhat)【英文标题】:How to sent Email as HTML from bash script by using mail or mailx command (Centos/Redhat) 【发布时间】:2019-09-03 13:15:00 【问题描述】:我正在尝试从 bash 脚本发送一封电子邮件,该电子邮件的正文中应包含 html 表格, 我在 Redhat 中使用 mail 命令。但它一直以文本文件的形式发送给我。
difference=`expr $artu_removed - $artu_added`
mail -s "Built notification" test@gmail.com << EOF
<html>
<head><title></title>
</head>
<body>
<table>
<tr>
<Td> Before </td> <td>after </td> <td>differece </td>
</tr>
<tr>
<Td> $_before </td> <td>$_after </td> <td>$difference </td>
</tr>
</table>
Before:$_before
After:$_after
Difference:$difference
</body>
</html>
EOF
谁能告诉我该怎么办,我用的是Redhat,不是ubuntu
谢谢
【问题讨论】:
见:How to send HTML email using linux command line @Cyrus,请查看其他 cmets 中的问题,我在 Outlook 中获取 HTML 表,但它将此行作为文本“Content-Transfer-Encoding: 7bit Cc: test@outlookcom User-Agent : Heirloom mailx 12.4 7/29/08 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit " 【参考方案1】:通过邮件尝试(不要忘记添加变量):
mail -a "Content-type: text/html" -s "HTML message" test@gmail.com << EOF
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Title</title>
</head>
<body>
<table>
<tr>
<td> Before </td>
<td> After </td>
<td> Differece </td>
</tr><tr>
<td> $_before </td>
<td> $_after </td>
<td> $difference </td>
</tr>
</table>
Before: $_before
After: $_after
Difference: $difference
</body>
</html>
EOF
如果您需要通过 mailx 从 CentOS/RedHat 发送,请使用它:
mail -s "$(echo -e "HTML message\nContent-Type: text/html")" test@gmail.com << EOF
为前景试一试:
mail -s "$(echo -e "HTML message\nContent-Transfer-Encoding: 7bit\nUser-Agent: Heirloom mailx 12.4 7/29/08\nMIME-Version: 1.0\nContent-Type: text/html; charset=us-ascii\nContent-Transfer-Encoding: 7bit")" test@outlook.com << EOF
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<title>Title</title>
...
【讨论】:
谢谢我已经尝试过该解决方案,它似乎 mail -a 命令在 ubuntu 中有效,但在 Redhat 中无效,我收到此错误 Content-type: text/html: No such file or directory 现在电子邮件来了,但它仍然一样,在电子邮件中,它显示为文本,今天我尝试了邮件和 maix,但它们都没有给我 html 输出。 @alammd 也许是因为你没有 CSS?将<body>
替换为<body style="background-color:#FF0000;">
。如果你得到文本,那么你应该只看到 HTML 标签,对吗?
基本上,在电子邮件中,我看到 放在里面
@alammd 你从哪里得到消息?邮箱?我正在尝试:gmail.com、mail.ru 和我自己的 mx - 一切都很完美! (CentOS 7.6.1810 / mailx 12.5-19.el7)以上是关于如何使用 mail 或 mailx 命令从 bash 脚本以 HTML 格式发送电子邮件(Centos/Redhat)的主要内容,如果未能解决你的问题,请参考以下文章
使用mail/mailx通过office365 SMTP发送邮件
LINUX下的mail\mailx为啥无法使用外部SMTP发邮件
配置mailx 通过465端口发送邮件 /etc/mail.rc