Foros del Web » Programación para mayores de 30 ;) » Java »

Referencia a imagen

Estas en el tema de Referencia a imagen en el foro de Java en Foros del Web. Hola, Necesito traer una imagen para mi aplicacion y establecerla como parte de un correo. Tengo el siguiente codigo: Código: URL resource = Thread.currentThread().getContextClassLoader().getResource("/imagenes/miimagen.jpg"); File ...
  #1 (permalink)  
Antiguo 08/07/2008, 09:47
 
Fecha de Ingreso: octubre-2004
Mensajes: 135
Antigüedad: 19 años, 6 meses
Puntos: 0
Referencia a imagen

Hola,

Necesito traer una imagen para mi aplicacion y establecerla como parte de un correo. Tengo el siguiente codigo:
Código:
   URL resource = Thread.currentThread().getContextClassLoader().getResource("/imagenes/miimagen.jpg");

   File imageFile = new File(resource.toExternalForm().replaceAll("%20", " "));
   DataSource fds = new FileDataSource(imageFile);
pero no me resulta....que puedo hacer??? :(

Muchas gracias!!
  #2 (permalink)  
Antiguo 09/07/2008, 09:57
Usuario no validado
 
Fecha de Ingreso: junio-2008
Mensajes: 386
Antigüedad: 15 años, 10 meses
Puntos: 10
Respuesta: Referencia a imagen

Hola, te envio el codigo que funciona:

URL resource= Thread.currentThread().getContextClassLoader().get Resource("/imagenes/miimagen.jpg");
DataSource fds=new URLDataSource(resource);
bodyPart.setDataHandler(new DataHandler(fds));
bodyPart.setHeader("Content-ID","<image>");
multipart.addBodyPart(bodyPart);
msg.setContent(multipart);


Recuerda que dentro de la carpeta /WEB-INF/classes debes de tener una carpeta que se llame imagenes y dentro de esta, tu imagen.

Espero te sirva.

saludos!!
  #3 (permalink)  
Antiguo 09/07/2008, 12:49
 
Fecha de Ingreso: octubre-2004
Mensajes: 135
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Referencia a imagen

holaaa

Q pena insistir tanto con esto, pero aun no logor q funcione, el codigo que me pasaste me devuelve null.
  #4 (permalink)  
Antiguo 09/07/2008, 12:59
 
Fecha de Ingreso: octubre-2004
Mensajes: 135
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Referencia a imagen

Finalmente hice que funcionara o mejor dicho tu hiciste que funcionara

Muuuuuchas gracias
  #5 (permalink)  
Antiguo 09/07/2008, 13:51
Usuario no validado
 
Fecha de Ingreso: junio-2008
Mensajes: 386
Antigüedad: 15 años, 10 meses
Puntos: 10
Respuesta: Referencia a imagen

No tienes nada que agradecer, para eso estoy, para compartir el pequeño conocimiento que he adquirido.

Cualquier cosa ya sabes.

saludos!
  #6 (permalink)  
Antiguo 09/07/2008, 14:24
 
Fecha de Ingreso: octubre-2004
Mensajes: 135
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Referencia a imagen

Holaaa
Mira que ahora no me saca null y dice que encuentra el archivo pero no lo muestra
  #7 (permalink)  
Antiguo 09/07/2008, 14:29
Usuario no validado
 
Fecha de Ingreso: junio-2008
Mensajes: 386
Antigüedad: 15 años, 10 meses
Puntos: 10
Respuesta: Referencia a imagen

Que raro,

No te has fijado si la imagen te la envia como adjunto??

A mi si me funciona, tengo la imagen como background en el correo.

Mmmm... a menos que sea por esto:
En la etiqueta body agregale lo siguiente:

<BODY background=\"cid:image\">

Espero te sirva, y me comentas que paso.

saludos!
  #8 (permalink)  
Antiguo 09/07/2008, 14:44
 
Fecha de Ingreso: octubre-2004
Mensajes: 135
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Referencia a imagen

Yo tengo:
<img name=\"figura1\" id=\"figura1\" src=\"cid:image\" width=\"150\" height=\"41\" alt=\"logo150px\"/>

y:
messageBodyPart.setHeader("Content-ID", "image");
  #9 (permalink)  
Antiguo 09/07/2008, 15:05
Usuario no validado
 
Fecha de Ingreso: junio-2008
Mensajes: 386
Antigüedad: 15 años, 10 meses
Puntos: 10
Respuesta: Referencia a imagen

Pues ya lo probe como lo tienes tu y si me funciona.


MimeMultipart multiPart=new MimeMultipart();
BodyPart bodyPart=new MimeBodyPart();
bodyPart.setContent("cuerpo del mensaje","text/html");
multiPart.addBodyPart(bodyPart);
bodyPart=new MimeBodyPart();

URL resource= Thread.currentThread().getContextClassLoader().get Resource("/imagenes/miimagen.jpg");
DataSource fds=new URLDataSource(resource);
bodyPart.setDataHandler(new DataHandler(fds));
bodyPart.setHeader("Content-ID","<image>");
multipart.addBodyPart(bodyPart);
msg.setContent(multipart);

Checalo y pues sino te mando el codigo completo.
  #10 (permalink)  
Antiguo 10/07/2008, 09:21
 
Fecha de Ingreso: octubre-2004
Mensajes: 135
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Referencia a imagen

Nooo mira que nada q puedo hacer que muestre la imagen, este es mi codigo completo:

// Construimos el mensaje
MimeMessage message = new MimeMessage(sessionx);

message.setFrom(new InternetAddress(orcorreo));
message.addRecipient(
Message.RecipientType.TO,
new InternetAddress((String) session.getAttribute("ucorreo")));
message.setSubject("Tema");


// Create your new message part
BodyPart messageBodyPart = new MimeBodyPart();

// Set the HTML content, be sure it references the attachment

String htmlText = "<table border=\"0\">" + "<tbody>" + "<tr>" + "<td><img name=\"figura1\" id=\"figura1\" src=\"cid:image\" width=\"150\" height=\"41\" alt=\"logo150px\"/>" + "</td>" + "<td></td>" + "</tr>" + "<tr>" + "<td>Estimado Sr(a) " + (String) session.getAttribute("unombre") + " <br> Gracias por registrarse <br>" + "Para activar su cuenta hace falta un ultimo paso <br>" + "necesita pulasr el siguiente enlace y su cuenta sera creada: <br>" + "Para completar el registro, pulse:" + "<a href=\"http://localhost:8084/epinuevo/registroUsuario4.jsp?fnombre=" + (String) session.getAttribute("fnombre") + "&ucorreo=" + (String) session.getAttribute("ucorreo") + "\">Activar su cuenta</a>" + "</td>" + "<td></td>" + "</tr>" + "</tbody>" + "</table>";

messageBodyPart.setContent(htmlText, "text/html");

// Create a related multi-part to combine the parts
MimeMultipart multipart = new MimeMultipart("related");


// Add body part to multipart
multipart.addBodyPart(messageBodyPart);

// Create part for the image
messageBodyPart = new MimeBodyPart();
/*
// Fetch the image and associate to part
//DataSource fds = new URLDataSource(new URL("imagenes/logo150px.jpg"));
/* getClass().getResource("/imagenes/logo150px.jpg");
getClass().getResourceAsStream("/imagenes/logo150px.jpg");
DataSource fds = new FileDataSource(dir);*/

URL resource = Thread.currentThread().getContextClassLoader().get Resource("/imagenes/logo150px.jpg");
try {
System.out.println(resource.getPath());
} catch (Exception e) {
e.printStackTrace();
}
resource.toExternalForm().replaceAll("%20", " ");
DataSource fds = new URLDataSource(resource);
messageBodyPart.setDataHandler(new DataHandler(fds));


// Add a header to connect to the HTML
messageBodyPart.setHeader("Content-ID", "image");

// Add part to multi-part
multipart.addBodyPart(messageBodyPart);

// Associate multi-part with message
message.setContent(multipart);


La verda no se que estoy haciendo mal, pero al correo me llega en vez de la imagen un cuadro gris.
  #11 (permalink)  
Antiguo 10/07/2008, 10:59
Usuario no validado
 
Fecha de Ingreso: junio-2008
Mensajes: 386
Antigüedad: 15 años, 10 meses
Puntos: 10
Respuesta: Referencia a imagen

Hola,

Ya lo probe, en la linea donde declaras la variable resource de tipo URL, quitale la primera diagonal donde viene la carpeta de imagenes, debe de quedar asi:

URL resource = Thread.currentThread().getContextClassLoader().get Resource("imagenes/logo150px.jpg");

Espero funcione, me avisas.

saludos!
  #12 (permalink)  
Antiguo 10/07/2008, 12:21
 
Fecha de Ingreso: octubre-2004
Mensajes: 135
Antigüedad: 19 años, 6 meses
Puntos: 0
Respuesta: Referencia a imagen

no nada q funciona, el mismo cuadro gris.
En este pedazo:

resource.toExternalForm().replaceAll("%20", " ");
DataSource fds = new URLDataSource(resource);
messageBodyPart.setDataHandler(new DataHandler(fds));

Creo q trae mal la direccion.
  #13 (permalink)  
Antiguo 10/07/2008, 13:04
Usuario no validado
 
Fecha de Ingreso: junio-2008
Mensajes: 386
Antigüedad: 15 años, 10 meses
Puntos: 10
Respuesta: Referencia a imagen

A mi si me funciona, bueno, quitandole la diagonal que te dije

Y si me mandas un correo a mi desde tu aplicacion y checo el codigo fuente y te aviso??
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 12:32.