`
unbounder
  • 浏览: 174320 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

shell发送包含图片的邮件

阅读更多
用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就可以发送包含图片的邮件了。
0
1
分享到:
评论

相关推荐

    shell定时器与shell发送邮件给到邮箱

    shell 定时器与 shell 发送邮件给到邮箱 在 Linux 系统中,shell 定时器是一种非常有用的功能,可以让用户在指定的时间执行特定的任务。shell 定时器可以用于自动化一些重复性的任务,例如备份数据、发送邮件等。 ...

    linux shell 发送email 邮件

    本教程将介绍三种不同的方法来使用Linux Shell发送邮件。 ### 方法一:简单邮件发送 最基础的发送邮件方式是使用内置的`mail`命令。下面的命令行示例展示了如何发送一个简单的文本邮件: ```bash echo 'hello ...

    shell脚本通过sendMail25端口发送email邮件.rar

    这个压缩包文件“shell脚本通过sendMail25端口发送email邮件”可能包含了实现这一功能的示例脚本和相关说明。解压并研究这些文件,可以帮助你更好地理解上述概念,并学会如何在自己的系统上实现shell脚本发送邮件。

    shell脚本监控rabbitmq异常发送邮件通知.rar

    标题"shell脚本监控rabbitmq异常发送邮件通知.rar"表明这个压缩包包含了一个用Shell编写的脚本,其主要功能是对RabbitMQ集群进行健康检查,并在发现异常时通过邮件通知管理员。这对于及时发现和解决问题至关重要,...

    shell脚本mail465端口发送email邮件.rar

    本文将深入探讨如何使用shell脚本来通过SMTP(Simple Mail Transfer Protocol)服务,特别是465端口,发送电子邮件。 首先,了解SMTP协议至关重要。SMTP是互联网标准,用于发送电子邮件。通常,SMTP服务器监听25号...

    shell脚本可配置备份文件夹及子文件异常通过sendEmail25端口发送邮件.rar

    这个名为"shell脚本可配置备份文件夹及子文件异常通过sendEmail25端口发送邮件"的压缩包内容涉及到两个主要技术:Shell脚本和电子邮件通知系统。下面将详细介绍这两个知识点。 **Shell脚本**: Shell脚本是Linux或...

    使用邮件发送图片.zip

    本示例中,我们看到一个名为"使用邮件发送图片.zip"的压缩包,它包含了一个在Linux内核环境下使用C语言编写的程序,用于发送邮件并附带图片。这个程序涉及到几个关键知识点,包括Linux命令行操作、C语言编程、邮件...

    linux shell发送Email邮件的方法详解

    本文将详细介绍如何使用Linux Shell发送Email邮件,包括发送简单邮件、设置邮件格式、处理中文标题以及使用HTML内容。 首先,让我们看一封最简单的邮件是如何构建的。在Shell中,我们可以使用`sendmail`命令发送...

    shell脚本监控zookeeper集群节点异常发送邮件通知.rar

    这个压缩包“shell脚本监控zookeeper集群节点异常发送邮件通知.rar”提供了一个解决方案,当Zookeeper集群中的节点出现异常时,能够自动向管理员发送邮件通知,以确保系统的稳定运行和快速响应问题。 首先,我们...

    Excel-VBA宏编程实例源代码-以Shell函数启动邮件软件并发送电子邮件.zip

    这个“Excel-VBA宏编程实例源代码-以Shell函数启动邮件软件并发送电子邮件.zip”文件包含了一个实用的VBA宏示例,它利用了Windows操作系统中的Shell函数来启动邮件客户端并自动发送电子邮件。下面我们将详细讨论这个...

    shell脚本监控kafka-connect集群节点异常发送邮件通知.rar

    这个压缩包文件"shell脚本监控kafka-connect集群节点异常发送邮件通知"应该包含了这个完整的脚本以及相关的配置文件,用户只需根据自己的环境进行适当的修改即可投入使用。对于那些不熟悉shell脚本或者Kafka Connect...

    shell监控redis集群节点异常发送邮件通知管理员.rar

    在“shell监控redis集群节点异常发送邮件通知管理员”这个场景中,我们关注的是如何利用Shell脚本实现这一功能。Shell脚本是一种在Unix/Linux操作系统下编写的一系列命令集合,可以实现自动化执行任务。在这个特定的...

    shell脚本可配置备份oracle数据库异常mail465发邮件.rar

    "shell脚本可配置备份oracle数据库异常mail465发邮件.rar"这个压缩包提供了一种自动化解决方案,通过Shell脚本来实现Oracle数据库的备份,并在出现异常时通过电子邮件通知管理员。 首先,我们来详细了解一下Shell...

    shell脚本可配置备份oracle数据库异常sendEmail25发邮件.rar

    本资源包含一个名为"shell脚本可配置备份oracle数据库异常sendEmail25发邮件"的压缩包,它提供了一个自动化解决方案,用于定期备份Oracle数据库并在出现异常时发送通知邮件。下面我们将详细探讨其中涉及的关键知识点...

    告警监控发送邮件脚本

    邮件发送脚本通常使用编程语言编写,例如Python、Shell或Perl。这里以Python为例,介绍一种常见的实现方式: 1. 引入库:Python的`smtplib`库用于处理SMTP(简单邮件传输协议),`email`库用于构建邮件内容。 2. ...

    使用PHP通过SMTP发送邮件

    发送邮件的基本步骤包括连接SMTP服务器、身份验证、指定发件人和收件人、发送邮件内容以及断开连接。通过telnet工具,我们可以直接与SMTP服务器交互,模拟邮件发送过程。例如,以下是一个简单的telnet示例: ```...

    基于Python和Shell脚本的自动发送带Excel报表附件邮件设计源码

    本项目为基于Python和Shell脚本的邮件发送系统,旨在自动发送包含Excel报表附件的邮件。项目源码包含28个文件,涵盖5个Python脚本、3个XML配置文件、3个配置文件、3个文本文件、3个Excel文件、2个Git忽略文件、2个...

    vb jmail 发送邮件

    代码示例展示了如何设置邮件的各种属性,包括邮件主题、正文、附件等,以及如何指定SMTP服务器进行邮件发送。 ```vb Sub SendMail(Optional ByVal Subject As String, Optional ByVal Body As String, Optional ...

    Linux或Ubuntu下SVN服务器自动发送邮件配置

    这样,每次有新的代码提交时,系统就会自动发送包含提交详情的邮件了。 这个自动化过程对于团队协作尤其有用,它能及时通知团队成员代码变更情况,有助于保持团队的同步和项目的透明度。同时,了解如何配置SVN...

    tomcat健康检查脚本文件异常发送邮件通知.rar

    本压缩包提供的"tomcat健康检查脚本文件异常发送邮件通知.rar"就是为了解决这个问题,它包含了一个可配置化的Shell脚本,能够定期检查Tomcat的状态,并在检测到异常时自动发送邮件通知给管理员。 首先,我们来详细...

Global site tag (gtag.js) - Google Analytics