Foros del Web » Programando para Internet » PHP »

PHPMailer e imagenes embebidas

Estas en el tema de PHPMailer e imagenes embebidas en el foro de PHP en Foros del Web. Amigos, estoy tratando de encontrar la solucion al siguiente problema. El tema es que tengo que hacer el envio de un mail a los clientes ...
  #1 (permalink)  
Antiguo 29/06/2006, 15:58
NHS
 
Fecha de Ingreso: junio-2002
Ubicación: Todos lados
Mensajes: 92
Antigüedad: 21 años, 10 meses
Puntos: 0
PHPMailer e imagenes embebidas

Amigos, estoy tratando de encontrar la solucion al siguiente problema. El tema es que tengo que hacer el envio de un mail a los clientes en formato html que es variable, puede tener o no imagenes y me piden que esten embebidas y el tema es que yo no se que nombre pueden tener las imagenes que incluyan en ese html, como para usar la siguiente funcion.

Código PHP:
$mail->AddEmbeddedImage("rocks.png""my-attach""rocks.png"));
$mail->Body 'Embedded Image: <img alt="PHPMailer" src="cid:my-attach"> Here is an image!'
Hay alguna forma de hacer que automaticamente me haga "AddEmbeddedImage" de todas las imagenes?

O que otra solucion puede usar??


Gracias
  #2 (permalink)  
Antiguo 30/06/2006, 06:29
NHS
 
Fecha de Ingreso: junio-2002
Ubicación: Todos lados
Mensajes: 92
Antigüedad: 21 años, 10 meses
Puntos: 0
ok, sacando de lado el doble ")"

Mi problema es como hacer para que queden embebidas todas las imagenes que tiene el html
  #3 (permalink)  
Antiguo 30/06/2006, 08:52
 
Fecha de Ingreso: julio-2002
Mensajes: 322
Antigüedad: 21 años, 9 meses
Puntos: 0
Me temo que mediante expresiones regulares o similar, deberas ir detectando imagen por imagen, "embebirla" e ir generando la nueva cadena HTML donde en vez de tener las rutas de las imagenes tengas el "cid:".

Si hay alguna forma mas sencilla, tomare buena nota de ella :)
__________________
Saludos

Rubén
Teléfonos móviles, curiosidades: http://telefonos-moviles.muchodenada.com/
  #4 (permalink)  
Antiguo 30/06/2006, 09:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Necesitarías "parsear" (con expresiones regualres como te han comentado) todo tu HTML en busca de las imagenes (a un array por ejemplo que contenga esos nombres de imagenes).

O si tienes médio de saber que imagenes son las que usastes en tu HTML por otro médio (por qué las subistes al servidor tal vez con PHP .. o tienes claro en que directorio del servidor están ...). Se trata de que por el médio que corresponda obtengas un array "limpio" con los nombres de las imagenes.


Código PHP:
// obtienes tu array de imagenes ... quedando al final algo tipo:
$imagenes_array=array("nose.jpg","blabla.jpg");

// contador .inicio.
$x=0;
// bucle para recorrer los elementos del array.
foreach ($imagenes_array as $imagen){
    
// adjuntar la imagen y darle nombre dinámico (imagen_n°)
   
$mail->AddEmbeddedImage($imagen"imagen_".$x$imagen)); 
   
// sustituir el nombre de tu archivo por el "cid:" y nombre de referencia generado ...
   
str_replace("cid:imagen_".$x,$imagen,$mail->Body);
  
// incrementar contador ...
$x++;

Habría que evaluar bien los casos concretos donde nombres de imagenes se puedan repetir .. ojo con eso ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 15/11/2006, 14:58
 
Fecha de Ingreso: mayo-2003
Mensajes: 37
Antigüedad: 20 años, 11 meses
Puntos: 0
Se solucionó este tema?
yo busco lo mismo..........
  #6 (permalink)  
Antiguo 15/11/2006, 15:11
NHS
 
Fecha de Ingreso: junio-2002
Ubicación: Todos lados
Mensajes: 92
Antigüedad: 21 años, 10 meses
Puntos: 0
mira en aquel tiempo me puse a hacerlo pero no lo termine, igualmente te doy lo que hice que no faltaria mucho

Código PHP:
/* Tipos de archivos que voy a embeber */
$image_types = array(
    
'gif'    => 'image/gif',
    
'jpg'    => 'image/jpeg',
    
'jpeg'    => 'image/jpeg',
    
'jpe'    => 'image/jpeg',
    
'png'    => 'image/png',
    
'tif'    => 'image/tiff',
    
'tiff'    => 'image/tiff',
    
'swf'    => 'application/x-shockwave-flash'
);

/*   Busco las imagenes que tiene el codigo HTML   */
function Buscar_Imagenes(){
    global 
$codigo_html,$image_types,$html_images;
    
$html_images "";
    while (list(
$key,) = each($image_types)) {
        
$extensions[] = $key;
    }
    
preg_match_all('/(?:"|\')([^"\']+\.('.implode('|'$extensions).'))(?:"|\')/Ui'$codigo_html$images);
    for (
$i=0$i<count($images[1]); $i++) {
        
$html_images[] = $images[1][$i];
    }
    
$html_images array_unique($html_images);

este codigo es muy beta, estaba apurado y estaba probando, hay muchas cosas por mejorar, pero esta encaminado
la var $codigo_html tiene el cuerpo del mail
y despues de ejecutar Buscar_imagenes, vas a tener un array "$html_images" con todas las imagenes que tiene ese codigo.
Despues quedaria reemplazar cada nombre de imagen por un cid y adjuntar la imagen con AddEmbeddedImage.

Suerte, si logras terminarlo postealo.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:27.