diff --git a/htdocs/includes/simplemail/class.mail.php b/htdocs/includes/simplemail/class.mail.php index 320b765fb55..57c78d02220 100644 --- a/htdocs/includes/simplemail/class.mail.php +++ b/htdocs/includes/simplemail/class.mail.php @@ -135,31 +135,37 @@ class simplemail { function writeattachement(&$attachement,$B) { $message = ''; + $inline = array(); if ( !empty($attachement) ) { foreach($attachement as $AttmFile){ $patharray = explode ("/", $AttmFile['filename']); $FileName = $patharray[count($patharray)-1]; - $message .= "\n--".$B."\n"; - - if (!empty($AttmFile['cid'])) { - $message .= "Content-Type: {$AttmFile['contenttype']};\n name=\"".$FileName."\"\n"; - $message .= "Content-Transfer-Encoding: base64\n"; - $message .= "Content-ID: <{$AttmFile['cid']}>\n"; - $message .= "Content-Disposition: inline;\n filename=\"".$FileName."\"\n\n"; - } else { - $message .= "Content-Type: application/octetstream;\n name=\"".$FileName."\"\n"; - $message .= "Content-Transfer-Encoding: base64\n"; - $message .= "Content-Disposition: attachment;\n filename=\"".$FileName."\"\n\n"; + // If duplicate images are embedded, they may show up as attachments, so remove them. + if (!in_array($AttmFile['filename'],$inline)) + { + $message .= "\n--".$B."\n"; + + if (!empty($AttmFile['cid'])) { + $inline[] = $AttmFile['filename']; + $message .= "Content-Type: {$AttmFile['contenttype']};\n name=\"".$FileName."\"\n"; + $message .= "Content-Transfer-Encoding: base64\n"; + $message .= "Content-ID: <{$AttmFile['cid']}>\n"; + $message .= "Content-Disposition: inline;\n filename=\"".$FileName."\"\n\n"; + } else { + $message .= "Content-Type: application/octetstream;\n name=\"".$FileName."\"\n"; + $message .= "Content-Transfer-Encoding: base64\n"; + $message .= "Content-Disposition: attachment;\n filename=\"".$FileName."\"\n\n"; + } + + $fd=fopen ($AttmFile['filename'], "rb"); + $FileContent=fread($fd,filesize($AttmFile['filename'])); + fclose ($fd); + + $FileContent = chunk_split(base64_encode($FileContent)); + $message .= $FileContent; + $message .= "\n\n"; } - - $fd=fopen ($AttmFile['filename'], "rb"); - $FileContent=fread($fd,filesize($AttmFile['filename'])); - fclose ($fd); - - $FileContent = chunk_split(base64_encode($FileContent)); - $message .= $FileContent; - $message .= "\n\n"; } $message .= "\n--".$B."--\n"; } diff --git a/htdocs/lib/CMailFile.class.php b/htdocs/lib/CMailFile.class.php index 548707e4402..f85f5367752 100644 --- a/htdocs/lib/CMailFile.class.php +++ b/htdocs/lib/CMailFile.class.php @@ -895,25 +895,31 @@ class CMailFile if (!empty($this->html_images)) { - // If duplicate images are embedded, they may show up as attachments, so remove them. - //$html_images = array_unique($this->html_images); - //sort($html_images); + $inline = array(); + $i=0; foreach ($this->html_images as $img) { - // Read imahe file - if ($image = file_get_contents($images_dir.'/'.$img["name"])) + $fullpath = $images_dir.'/'.$img["name"]; + + // If duplicate images are embedded, they may show up as attachments, so remove them. + if (!in_array($fullpath,$inline)) { - // On garde que le nom de l'image - eregi('([A-Za-z0-9_-]+[.]?[A-Za-z0-9]+)?$',$img["name"],$regs); - $imgName = $regs[1]; - - $this->images_encoded[$i]['name'] = $imgName; - $this->images_encoded[$i]['content_type'] = $img["content_type"]; - $this->images_encoded[$i]['cid'] = $img["cid"]; - // Encodage de l'image - $this->images_encoded[$i]["image_encoded"] = chunk_split(base64_encode($image), 68, $this->eol); + // Read image file + if ($image = file_get_contents($fullpath)) + { + // On garde que le nom de l'image + eregi('([A-Za-z0-9_-]+[.]?[A-Za-z0-9]+)?$',$img["name"],$regs); + $imgName = $regs[1]; + + $this->images_encoded[$i]['name'] = $imgName; + $this->images_encoded[$i]['content_type'] = $img["content_type"]; + $this->images_encoded[$i]['cid'] = $img["cid"]; + // Encodage de l'image + $this->images_encoded[$i]["image_encoded"] = chunk_split(base64_encode($image), 68, $this->eol); + $inline[] = $fullpath; + } } $i++; }