创建跨多个客户端的电子邮件图像处理的通用功能

时间:2012-02-10 19:57:09

标签: php regex html-email

我有一组管理电子邮件帐户的脚本,并将它们发布到MySQL表中。大多数电子邮件客户端处理插入到正文中的图像为 cid:,浏览器无法查看这些链接。

所以我有一组用Outlook 2010测试的代码,它将从电子邮件中提取图像并将它们保存到目录中。我遇到的问题是电子邮件将使用各种电子邮件客户端发送,到目前为止我只能成功处理Outlook 2010的图像。如何创建一组功能来成功管理它们?作为一种通用图像功能: 我的代码块:

/***************************** 1st image in email**********************************/
if (preg_match('/cid:([^"@]*).(png|jpg|jpeg|gif|bmp)@([^"]*)/', $html_part, $m)){

$find = '/cid:'.$m[1].'.'.$m[2].'@([^"]*)/';

if ($m[2] == 'png') $replace = $png1;
if ($m[2] == 'jpg') $replace = $jpg1;
if ($m[2] == 'gif') $replace = $gif1;
if ($m[2] == 'bmp') $replace = $bmp1;
if ($m[2] == 'jpeg') $replace = $jpeg1;
$html_part = preg_replace($find, $replace, $html_part);
}

/***************************** 2nd image in email**********************************/                        
if (preg_match('/cid:([^"@]*).(png|jpg|jpeg|gif|bmp)@([^"]*)/', $html_part, $m)){

$find = '/cid:'.$m[1].'.'.$m[2].'@([^"]*)/';

if ($m[2] == 'png') $replace = $png2;
if ($m[2] == 'jpg') $replace = $jpg2;
if ($m[2] == 'gif') $replace = $gif2;
if ($m[2] == 'bmp') $replace = $bmp2;
if ($m[2] == 'jpeg') $replace = $jpeg2;

$html_part = preg_replace($find, $replace, $html_part);
}

但是当我接受其他测试的电子邮件客户端时: Windows Live Mail:

src=3D"cid:813DEC0642E941F0845447B680DA566A@BrinardHP"

的Hotmail:

src="https://*****.storage.live.com/y1pZinLnQnaoBClW=RMsQ5sAzEF1H4HGond-KoaAjdcEX0GCp9HzrWa2RSJwI9ngxR7WIub5M9Ps810/cloudsprite.=jpg"

iPhone的默认邮件应用

src="cid:1D8E2297-F260-4555-8223-304A9DB08CC5/image.jpeg"

因此,而不是花费数天时间编写基于特定电子邮件客户端的图像处理程序cid:references,我怎么说,遍历刚刚保存的目录中的所有图像并将它们正确地应用到它们在邮件正文。 因此$ replace链接是对已保存到目录的图像的超链接引用。感谢。

0 个答案:

没有答案