如何使用 Linux 命令行发送 HTML 邮件
- 2024-10-29 08:35:00
- admin 原创
- 62
问题描述:
我需要发送 html 格式的电子邮件。我只有 linux 命令行和命令“mail”。
目前已使用过:
echo "To: address@example.com" > /var/www/report.csv
echo "Subject: Subject" >> /var/www/report.csv
echo "Content-Type: text/html; charset=\"us-ascii\"" >> /var/www/report.csv
echo "<html>" >> /var/www/report.csv
mysql -u ***** -p***** -H -e "select * from users LIMIT 20" dev >> /var/www/report.csv
echo "</html>" >> /var/www/report.csv
mail -s "Built notification" address@example.com < /var/www/report.csv
但在我的邮件代理中我只收到纯文本。
解决方案 1:
这对我有用:
echo "<b>HTML Message goes here</b>" | mail -s "$(echo -e "This is the subject
Content-Type: text/html")" foo@example.com
解决方案 2:
我的邮件版本没有这个功能--append
,而且它对于`echo -e -trick 来说太聪明了(它只是用空格替换 \n)。但是,它确实有
-a`:
mail -a "Content-type: text/html" -s "Built notification" address@example.com < /var/www/report.html
解决方案 3:
使用命令行发送电子邮件
这个答案已经有 11 年多了,这些天我使用 python 的import ezgmail
4 行即插即用解决方案
创建一个名为的文件,tmp.html
内容如下:
<b>my bold message</b>
接下来,将以下内容粘贴到命令行中(括号及所有内容):
(
echo To: youremail@blah.com
echo From: el@defiant.com
echo "Content-Type: text/html; "
echo Subject: a logfile
echo
cat tmp.html
) | sendmail -t
由于该元素,邮件将包含一条粗体消息<b>
。
Shell 脚本
作为脚本,将以下内容保存为email.sh
:
ARG_EMAIL_TO="recipient@domain.com"
ARG_EMAIL_FROM="Your Name <you@host.com>"
ARG_EMAIL_SUBJECT="Subject Line"
(
echo "To: ${ARG_EMAIL_TO}"
echo "From: ${ARG_EMAIL_FROM}"
echo "Subject: ${ARG_EMAIL_SUBJECT}"
echo "Mime-Version: 1.0"
echo "Content-Type: text/html; charset='utf-8'"
echo
cat contents.html
) | sendmail -t
contents.html
在与脚本相同的目录中创建一个名为的文件,email.sh
如下所示:
<html><head><title>Subject Line</title></head>
<body>
<p style='color:red'>HTML Content</p>
</body>
</html>
运行email.sh
。当电子邮件到达时,HTML Content
文本将显示红色。
有关的
如何使用 bash 命令“sendmail”发送 html 电子邮件?
解决方案 4:
在 OS X(10.9.4)上,cat
如果您的电子邮件已经在文件中,则可以使用,并且更容易:
cat email_template.html | mail -s "$(echo -e "Test
Content-Type: text/html")" karl@marx.com
解决方案 5:
问题是,当将文件重定向到“邮件”时,它仅用于邮件正文。您嵌入文件中的任何标题都将进入正文。
尝试:
mail --append="Content-type: text/html" -s "Built notification" address@example.com < /var/www/report.csv
--append 允许您向邮件添加任意标题,您应该在其中指定内容类型和内容处置。无需在文件中嵌入To
和Subject
标题,也无需使用 --append 指定它们,因为您已经在命令行上隐式设置它们(-s 是主题,address@example.com自动变为To
)。
解决方案 6:
使用 heirloom-mailx,您可以将 sendmail 程序更改为您的挂钩脚本,在那里替换标题,然后使用 sendmail。
我使用的脚本(~/bin/sendmail-hook
):
#!/bin/bash
sed '1,/^$/{
s,^(Content-Type: ).*$,text/html; charset=utf-8,g
s,^(Content-Transfer-Encoding: ).*$,8bit,g
}' | sendmail $@
此脚本按如下方式更改邮件头中的值:
Content-Type:
到text/html; charset=utf-8
Content-Transfer-Encoding:
(不确定8bit
是否真的需要)。
发送 HTML 电子邮件:
mail -Ssendmail='~/bin/sendmail-hook' \n -s "Built notification" address@example.com < /var/www/report.csv
解决方案 7:
这个问题很老了,但是当我在谷歌上搜索有关这个问题时,它的排名很高。
在这里找到答案:
使用 shell 脚本发送 HTML 邮件
解决方案 8:
我在 git 的 post_receive 钩子之一中遇到了类似的问题(与邮件有关),最后我发现,sendmail 实际上更适合这类事情,特别是如果你知道一些电子邮件的构造方式(而且你似乎知道)。我知道这个答案来得很晚,但也许对其他人也会有用。我使用了 heredoc 运算符和扩展变量的功能,因此它也可以运行内联脚本。看看这个(bash 脚本):
#!/bin/bash
recipients=(
'john@example.com'
'marry@not-so-an.example.com'
# 'naah@not.this.one'
);
sender='highly-automated-reporter@example.com';
subject='Oh, who really cares, seriously...';
sendmail -t <<-MAIL
From: ${sender}
`for r in "${recipients[@]}"; do echo "To: ${r}"; done;`
Subject: ${subject}
Content-Type: text/html; charset=UTF-8
<html><head><meta charset="UTF-8"/></head>
<body><p>Ladies and gents, here comes the report!</p>
<pre>`mysql -u ***** -p***** -H -e "SELECT * FROM users LIMIT 20"`</pre>
</body></html>
MAIL
注意 MAIL 部分中的反引号会生成一些输出,并记住,该<<-
运算符只会从行首删除制表符(而不是空格),因此在这种情况下复制粘贴将不起作用(您需要用适当的制表符替换缩进)。或者使用<<
运算符,根本不缩进。希望这会对某人有所帮助。当然,您可以在 MAIL 部分之外使用反引号,并将输出保存到某个变量中,稍后您可以在 MAIL 部分中使用该变量 — 这取决于品味和可读性。我知道,#!/bin/bash
它并不总是在每个系统上都有效。
解决方案 9:
我发现了一个非常简单的解决方案:在邮件命令中添加修饰符 -aContent-Type:text/html。
你的情况是:
mail -aContent-Type:text/html -s "Built notification" address@example.com < /var/www/report.csv
解决方案 10:
您应该使用“附加”模式重定向,>>
而不是>
解决方案 11:
尝试:
echo "To: address@example.com" > /var/www/report.csv
echo "Subject: Subject" >> /var/www/report.csv
echo "MIME-Version: 1.0" >> /var/www/report.csv
echo "Content-Type: text/html; charset=\"us-ascii\"" >> /var/www/report.csv
echo "Content-Disposition: inline" >> /var/www/report.csv
echo "<html>" >> /var/www/report.csv
mysql -u ***** -p***** -H -e "select * from users LIMIT 20" dev >> /var/www/report.csv
echo "</html>" >> /var/www/report.csv
mail -s "Built notification" address@example.com < /var/www/report.csv
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件