如何在邮件中嵌入图片,而非上传在附件

现在好的邮件客户端如outlook等支持直接插入图片,接收方阅读时也表现为非附件形式. 但是如果我们用代码实现呢?我们可以用下面2种方式实现
1.可以将图片传到有外链的网站,这个就无需介绍了,如果图片不变化,推荐这种形式。
2.采用base 64编码的方式,在此重点讲讲这种方式。


嵌入图片,可以说这是HTML的知识例了

1.首先需要准备图片,这里有个限制,我们在最后说明。

[img]http://dl.iteye.com/upload/attachment/0075/1049/a7a921bf-9840-3875-b6b7-d7e2d1276e9b.png[/img]

2.对图片进行base 64编码
这里采用PHP base64_encode 函数进行演示,代码如下:
$content=base64_encode(file_get_contents('F:\test.png'));
file_put_contents('F:\test.txt',$content);

会产生如下的编码:
iVBORw0KGgoAAAANSUhEUgAAAJwAAABPCAIAAACRcDubAAAABmJLR0QA/wD/AP+
gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4nN19eZwVxdXoOVXVfb
dZgZlhFcVhWGRRQXbERD9lwAXjlkQNLkTQRDEuSUx8X5bPZ+IOrqAoGo0xGqOIMLjG
BRD3hZ0ZBNlhgFnv1l11zvuju+/cWRncfu+9+t3fTN/u6qo6dersp+pi2I44RiOiVKgwxIqA
HJshVyoyUKvTCYWWEQDAzACQfWGIMLiD/j1ABkSEoGQqAwA33e5UQcTs171mERHIv
4mC/YYRAECw8CpkBuC9TuhfZFrzKjAABtciGDYygGCvayISQkgpAcAYIwUqFEqiABYAEk
EJlChiglgqRmDmkMQ8hblSWmAkE0oLEQ2TJkAphBDEmEzTXkrHmfIxlCOURmPAtRBy
lIxJOwQiTU4SDCuIoAqjBETHaAUYlXYKTA2lbSGLRKRHxM1HPIBid5w1mj55PBiFRZbIwJ
+Nif93SwsoDgndYYGfvVwOd7pav9veUDvfILQzfnG4rbTZffaIv7eSNZ6277f3SseI+eaAZ
LfQ3sy0idGOV17HdTJ9IaJos4/ODPeQT7nV57soLWaw9XVnCOJw6S
..............省略..................

3.编写邮件
我们采用编写HTML源码的形式,因为在代码中实现也只能这种方式了,没有可视化的....
内容:

发送后,就会呈现下面的形式:

[img]http://dl.iteye.com/upload/attachment/0075/1051/282036d2-2a56-39df-b0e0-4b1581574d2d.png[/img]

我们曾提到过图片有个限制,IE8(这边in7的foxmail用)只支持最大[color=red]32768 Bytes[/color]的base64编码,其他如chrome,IE9没有这个限制,而且一般图片转换成base64以后会增大30%,在此给个参考,上面的图片

格式: png
大小: 156 x 79px
原始大小: 14626 Bytes
转换后大小: 19504 Bytes.

你可能感兴趣的:(其他)