用shell 发封html格式的邮件不难
cat mail|sendmail -t
其中mail为
To:xx@111.com
Subject:aaa
content-type:text/html
<html>
<img src="aa"/>
</html>
用shell发包含附件的邮件也不难
(cat mail;uuencode a.jpg a.jpg)|sendmail -t
mail为
To:xx@111.com
Subject:aaa
但是如果想在邮件正文中嵌入附件图片:
(cat mail;uuencode a.jpg a.jpg)|sendmail -t
To:xx@111.com
Subject:aaa
content-type:text/html
<html>
<img src="aa"/>
</html>
结果会是sendmial将附件a.jpg编码后负载邮件正文,也就是俗称的乱码邮件。
那怎么办呢?
先来了解mime的概念,MIME的英文全称是"Multipurpose Internet Mail Extensions" 多功能Internet 邮件扩充服务,它是一种多用途网际邮件扩充协议
http://en.wikipedia.org/wiki/MIME
一封嵌入附件中的图片的邮件,就得符合mime协议。
按照rcf2046中所说 http://tools.ietf.org/html/rfc2046#section-5.1.1
当邮件中需要一个图片附件时的格式为:
引用
MIME-Version: 1.0
Content-type: multipart/mixed; boundary="123"
This is the preamble. It is to be ignored, though it
is a handy place for composition agents to include an
explanatory note to non-MIME conformant readers.
--123
Content-Type: image/jpeg; name=a.jpg
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=a.jpg;
a.jpg的base64数据
--123--
而一个内容为html的邮件格式为:
引用
MIME-Version: 1.0
Content-type: multipart/mixed; boundary="123"
This is the preamble. It is to be ignored, though it
is a handy place for composition agents to include an
explanatory note to non-MIME conformant readers.
--123
Content-Type: text/html; charset=gbk; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
html代码
--123--
组合一下,
引用
MIME-Version: 1.0
Content-type: multipart/mixed; boundary="123"
This is the preamble. It is to be ignored, though it
is a handy place for composition agents to include an
explanatory note to non-MIME conformant readers.
--123
Content-Type: text/html; charset=gbk; format=flowed
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
html代码
Content-Type: image/jpeg; name=a.jpg
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=a.jpg;
a.jpg的base64数据
--123--
邮件格式中的换行是协议需求,不能省去。
注意
1 获取某种图片的base64编码的方法为cat a.jpg |uuencode --base64 a.jpg>temp
2 得到a.jpg的编码后,要通过sed命令来去掉第一行和最后一行。因为第一行是begin base64 xxxx,最后一行是====
3 html代码里获取附件的方法是<img src="filename">
4 附件格式和content-type的对应关系查看http://www.webmaster-toolkit.com/mime-types.shtml
上面的片段再加上邮件头部,得到文件mail
然后使用cat mail|sendmail -t就可以发送包含图片的邮件了。
分享到:
相关推荐
shell 定时器与 shell 发送邮件给到邮箱 在 Linux 系统中,shell 定时器是一种非常有用的功能,可以让用户在指定的时间执行特定的任务。shell 定时器可以用于自动化一些重复性的任务,例如备份数据、发送邮件等。 ...
本教程将介绍三种不同的方法来使用Linux Shell发送邮件。 ### 方法一:简单邮件发送 最基础的发送邮件方式是使用内置的`mail`命令。下面的命令行示例展示了如何发送一个简单的文本邮件: ```bash echo 'hello ...
这个压缩包文件“shell脚本通过sendMail25端口发送email邮件”可能包含了实现这一功能的示例脚本和相关说明。解压并研究这些文件,可以帮助你更好地理解上述概念,并学会如何在自己的系统上实现shell脚本发送邮件。
标题"shell脚本监控rabbitmq异常发送邮件通知.rar"表明这个压缩包包含了一个用Shell编写的脚本,其主要功能是对RabbitMQ集群进行健康检查,并在发现异常时通过邮件通知管理员。这对于及时发现和解决问题至关重要,...
本文将深入探讨如何使用shell脚本来通过SMTP(Simple Mail Transfer Protocol)服务,特别是465端口,发送电子邮件。 首先,了解SMTP协议至关重要。SMTP是互联网标准,用于发送电子邮件。通常,SMTP服务器监听25号...
这个名为"shell脚本可配置备份文件夹及子文件异常通过sendEmail25端口发送邮件"的压缩包内容涉及到两个主要技术:Shell脚本和电子邮件通知系统。下面将详细介绍这两个知识点。 **Shell脚本**: Shell脚本是Linux或...
本示例中,我们看到一个名为"使用邮件发送图片.zip"的压缩包,它包含了一个在Linux内核环境下使用C语言编写的程序,用于发送邮件并附带图片。这个程序涉及到几个关键知识点,包括Linux命令行操作、C语言编程、邮件...
本文将详细介绍如何使用Linux Shell发送Email邮件,包括发送简单邮件、设置邮件格式、处理中文标题以及使用HTML内容。 首先,让我们看一封最简单的邮件是如何构建的。在Shell中,我们可以使用`sendmail`命令发送...
这个压缩包“shell脚本监控zookeeper集群节点异常发送邮件通知.rar”提供了一个解决方案,当Zookeeper集群中的节点出现异常时,能够自动向管理员发送邮件通知,以确保系统的稳定运行和快速响应问题。 首先,我们...
这个“Excel-VBA宏编程实例源代码-以Shell函数启动邮件软件并发送电子邮件.zip”文件包含了一个实用的VBA宏示例,它利用了Windows操作系统中的Shell函数来启动邮件客户端并自动发送电子邮件。下面我们将详细讨论这个...
这个压缩包文件"shell脚本监控kafka-connect集群节点异常发送邮件通知"应该包含了这个完整的脚本以及相关的配置文件,用户只需根据自己的环境进行适当的修改即可投入使用。对于那些不熟悉shell脚本或者Kafka Connect...
在“shell监控redis集群节点异常发送邮件通知管理员”这个场景中,我们关注的是如何利用Shell脚本实现这一功能。Shell脚本是一种在Unix/Linux操作系统下编写的一系列命令集合,可以实现自动化执行任务。在这个特定的...
"shell脚本可配置备份oracle数据库异常mail465发邮件.rar"这个压缩包提供了一种自动化解决方案,通过Shell脚本来实现Oracle数据库的备份,并在出现异常时通过电子邮件通知管理员。 首先,我们来详细了解一下Shell...
本资源包含一个名为"shell脚本可配置备份oracle数据库异常sendEmail25发邮件"的压缩包,它提供了一个自动化解决方案,用于定期备份Oracle数据库并在出现异常时发送通知邮件。下面我们将详细探讨其中涉及的关键知识点...
邮件发送脚本通常使用编程语言编写,例如Python、Shell或Perl。这里以Python为例,介绍一种常见的实现方式: 1. 引入库:Python的`smtplib`库用于处理SMTP(简单邮件传输协议),`email`库用于构建邮件内容。 2. ...
发送邮件的基本步骤包括连接SMTP服务器、身份验证、指定发件人和收件人、发送邮件内容以及断开连接。通过telnet工具,我们可以直接与SMTP服务器交互,模拟邮件发送过程。例如,以下是一个简单的telnet示例: ```...
本项目为基于Python和Shell脚本的邮件发送系统,旨在自动发送包含Excel报表附件的邮件。项目源码包含28个文件,涵盖5个Python脚本、3个XML配置文件、3个配置文件、3个文本文件、3个Excel文件、2个Git忽略文件、2个...
代码示例展示了如何设置邮件的各种属性,包括邮件主题、正文、附件等,以及如何指定SMTP服务器进行邮件发送。 ```vb Sub SendMail(Optional ByVal Subject As String, Optional ByVal Body As String, Optional ...
这样,每次有新的代码提交时,系统就会自动发送包含提交详情的邮件了。 这个自动化过程对于团队协作尤其有用,它能及时通知团队成员代码变更情况,有助于保持团队的同步和项目的透明度。同时,了解如何配置SVN...
本压缩包提供的"tomcat健康检查脚本文件异常发送邮件通知.rar"就是为了解决这个问题,它包含了一个可配置化的Shell脚本,能够定期检查Tomcat的状态,并在检测到异常时自动发送邮件通知给管理员。 首先,我们来详细...