Ver Mensaje Individual
  #6 (permalink)  
Antiguo 26/05/2005, 09:27
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. si ya tienes la función hecha (o casi) podrías adaptarla a PHP Mailer .. de hecho fijate lo que hace o como trabaja esta (al parecer):

Todo este código:
function parseHtml($boundary)
{
$images = array();
$html_images = "";
preg_match_all("/src=\"[^\"]*\"/", $this->Body_html, $images);
foreach($images[0] as $image)
{
$path = preg_replace(array("/src=/", "/\"/"), "", $image);
$iname = explode('/', $path);
$iname = $iname[count($iname)-1];
$itype = explode('.', $iname);
$itype = $itype[count($itype)-1];
$cid = 'image_'.md5(microtime());
$path = preg_replace("/http\:\/\//", "", $path);
$path = explode("/", $path);
$path[0] = substr($_SERVER['DOCUMENT_ROOT'],0,strlen($_SERVER['DOCUMENT_ROOT']));
$path = implode("/", $path);

más o menos hasta ahí .. hace tu reemplazo de todos los tag's HTML que se ecuentren en el cuerpo de tu e-mail de tipo <img src= ....> (y no sólo imagen .. sino referencias externas a <javascript scr=....> etc .. ) por el famoso "CID" (que no sabía .. pero es un nombre para hacerlo único al parecer ...)

Luego tienes la función o método de la classe PHP Mailer que ya conoces .. la cual lee el archivo de su ubicación física, y lo incrustra en el e-mail (en la parte que se requiere .. en su base hace todos esos "fopen()" que en tu función original tienes y el manejo de las cabeceras HTTP que hace) ..

Así que llegado a este punto .. el "CID" ya lo tienes ($cid) .. también el nombre de la imagen que ha de quedar también ($image o basename($path) ... no sé si realmente $imagen contiene sólo el nombre de la imagen ahora mismo) y la ruta+nombre de la imagen .. también ($path) .. justamente son esos los tres parámetros que necesitas para usar (el nombre de la imagen sería opcional .. ):

AddEmbeddedImage ()


En resumen .. debería quedar algo tipo (tu función):

Código PHP:
function parseHtml($boundary
    { 
        global 
$mail// llamamos de forma global a objeto de PHP Mailer ... (si no es ese el nombre instanciado de la classe PHP Mailer .. cambialo.
        
$images = array(); 
        
$html_images ""
        
preg_match_all("/src=\"[^\"]*\"/"$this->Body_html$images); 
        foreach(
$images[0] as $image
        { 
            
$path preg_replace(array("/src=/""/\"/"), ""$image); 
            
$iname explode('/'$path); 
            
$iname $iname[count($iname)-1]; 
            
$itype explode('.'$iname); 
            
$itype $itype[count($itype)-1]; 
            
$cid 'image_'.md5(microtime()); 
            
$path preg_replace("/http\:\/\//"""$path); 
            
$path explode("/"$path); 
            
$path[0] = substr($_SERVER['DOCUMENT_ROOT'],0,strlen($_SERVER['DOCUMENT_ROOT'])); 
            
$path implode("/"$path); 

$mail->AddEmbeddedImage ($path,$cid,basename($path));

Un saludo,