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

Mandar contenido de mi div por correo

Estas en el tema de Mandar contenido de mi div por correo en el foro de Java en Foros del Web. Buenas, estoy creando un formulario, el cual al ser rellenado se pasa a una pantalla de resultado que te muestra las respuesta. Y lo que ...
  #1 (permalink)  
Antiguo 11/05/2011, 03:35
 
Fecha de Ingreso: marzo-2011
Mensajes: 30
Antigüedad: 13 años, 7 meses
Puntos: 2
Exclamación Mandar contenido de mi div por correo

Buenas, estoy creando un formulario, el cual al ser rellenado se pasa a una pantalla de resultado que te muestra las respuesta. Y lo que me gustaría hacer es, despues de ver el resultado de la encuensta que lo pudiera mandar por correo. De momento solo he conseguido mandar correos que contengan String, sin que se pueda visualizar formatos, etc. Este es el código:

encuesta.jsp -> resultado_encuesta.jsp (aquí me gustaría poner un boton, que enviará el resutaldo usando mail.jsp)

encuesta.jsp

Código:
<html>
<head>
<title>Encuesta</title>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
<style type="text/css"></style>
<link rel="stylesheet" href="../css/style.css" type="text/css"/>
<script type="text/javascript" src="../js/script.js"></script>
</head>

<body onload="cambiarTitulo()">
<div class="contenido">
<div class="anuncio">Realiza la siguiente encuensta </div>
<form action="resultados_encuesta.jsp" method="post">


	 <table>
	    <tr><td><input type="hidden" name="pregunta_1" value="Pregunta 1">Pregunta 1</td><td><input type="text" name="respuesta_1"></td></tr>
	    <tr><td><input type="hidden" name="pregunta_2" value="Nombre y Apellidos">Nombre y Apellidos</td><td><input type="text" name="respuesta_2"></td></tr><tr><td colspan="2"><input class="enviar" type="submit" value="Vista previa"></td></tr>
	    
	    </table>
	</form>
	</div>
	</body>

</html>

resultado_encuesta.jsp

Código:
<html>
<head>
<title>Resultados encuesta</title>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
<style type="text/css"></style>
<link rel="stylesheet" href="../css/style.css" type="text/css"/>
<script type="text/javascript" src="../js/script.js"></script>
</head>

<body onload="cambiarTitulo()">
<div class="contenido">
	  <%

	   /*podemos leer los datos del request a una variable*/
	   
	     /*creamos la tabla */
   
	   out.print("<table>");
	 	   /*leemos la primera fila*/
	   out.print("<tr><td>");
	   out.print(request.getParameter("pregunta_1").toString());
	   out.print("</td><td>");
	   out.print(request.getParameter("respuesta_1").toString());
	   out.print("</td></tr>");
	   
	   /*leemos la segunda fila*/
	   out.print("<tr><td>");
	   out.print(request.getParameter("pregunta_2").toString());
	   out.print("</td><td>");
	   out.print(request.getParameter("respuesta_2").toString());
	   out.print("</td></tr>");
	   out.print("</table>");	
	 %>
	
	 
	 </div>
	 
	</body>
	</html>

y el mail.jsp

Código:
<%@ page language="java" %>
<%@ page import = "notas.MailSender"%>
<%
MailSender ms = new MailSender();

boolean result = ms.send("smtp.dominio.com","[email protected]",
"[email protected]","mail de prueba", false, new StringBuffer("<b>HOLAAAAAAAAAAAAAAAAAAAAA</b> (aquí me gustaría decirle que enviará el contenido del resultado"),true);

out.print("Mensaje enviado!!!");
	
%>
Si alguien tiene alguna sugerencia, se la agradecería.

Gracias.
  #2 (permalink)  
Antiguo 13/05/2011, 03:47
 
Fecha de Ingreso: marzo-2011
Mensajes: 30
Antigüedad: 13 años, 7 meses
Puntos: 2
Respuesta: Mandar contenido de mi div por correo

Ya lo arregle, podeís cerrar el tema.

Gracias!
  #3 (permalink)  
Antiguo 16/05/2011, 11:58
Avatar de jomaruro
Colaborador
 
Fecha de Ingreso: junio-2002
Ubicación: Naboo
Mensajes: 5.442
Antigüedad: 22 años, 4 meses
Puntos: 361
Respuesta: Mandar contenido de mi div por correo

Hola:

No estaría mal que explicaras como lo has solucionado así también aprendemos un poco los demás.

Saludos.

  #4 (permalink)  
Antiguo 19/05/2011, 04:58
 
Fecha de Ingreso: marzo-2011
Mensajes: 30
Antigüedad: 13 años, 7 meses
Puntos: 2
Respuesta: Mandar contenido de mi div por correo

Cita:
Iniciado por jomaruro Ver Mensaje
Hola:

No estaría mal que explicaras como lo has solucionado así también aprendemos un poco los demás.

Saludos.

Pues lo que hecho principalmente es editar el JAVA que se encarga de enviar el correo y el JSP donde esta el contenido del correo. Y lo he dejado así:

mailSender.java (dentro de un paquete llamado notas)
Código PHP:
package notas;

import java.util.Properties;
import java.util.Date;
import javax.mail.Session;
import javax.mail.Message;
import javax.mail.Transport;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.InternetAddress;

/**
 * <p>
 * Title: MailSender
 * </p>
 * 
 * <p>
 * Description:
 * </p>
 * 
 * <p>
 * Copyright: Copyright (c) 2005
 * </p>
 * 
 * <p>
 * Company:
 * </p>
 * 
 * @author Fernando Arturi
 * @version 1.0
 */

public class MailSender {

    public 
MailSender() {
    }

    public 
boolean send(String hostSmtpString senderAddress,
            
String toAddressString subjectboolean isHTMLFormat,
            
String bodyboolean debug) {

        
MimeMultipart multipart = new MimeMultipart();

        
Properties properties = new Properties();

        
properties.put("mail.smtp.host"hostSmtp);
        
Session session Session.getDefaultInstance(propertiesnull);
        
session.setDebug(debug);
        try {
            
MimeMessage msg = new MimeMessage(session);
            
msg.setFrom(new InternetAddress(senderAddress));
            
msg.setRecipients(Message.RecipientType.TOtoAddress);
            
// msg.setRecipients(Message.RecipientType.CC, ccAddress);
            // msg.setRecipients(Message.RecipientType.BCC, bccAddress);
            
msg.setSubject(subject);
            
msg.setSentDate(new Date());

            
// BODY
            
MimeBodyPart mbp = new MimeBodyPart();
            if (
isHTMLFormat) {
                
mbp.setContent(body.toString(), "text/html");
            } else {
                
mbp.setText(body.toString());
            }

            
multipart.addBodyPart(mbp);

            
msg.setContent(multipart);
            
Transport.send(msg);
        } catch (
Exception mex) {
            
System.out.println(">> MailSender.send() error = " mex);
            return 
false;
        }
        return 
true;
    }


Este es el JAVA que se encarga de enviar el correo. lo que he modificado ha sido lo que esta línea:

Antes
Código:
public static boolean send(String hostSmtp, String senderAddress,
			String toAddress, String subject, boolean isHTMLFormat,
			StringBuffer body, boolean debug) {
Despúes

Código:
public boolean send(String hostSmtp, String senderAddress,
			String toAddress, String subject, boolean isHTMLFormat,
			String body, boolean debug) {
No entiendo muy bien lo de stringbuffer, pero dejando solo String a secas me ha permitido hacer concatenaciones en el JSP, de manera que le puedes agregar el contenido que quieras. Quizas esto es un poco básico, pero no es que me he puesto a mirar un manual, simplemente tocando...

Y luego este sería el JSP

encuesta.jsp (el formulario de encuesta, que al darle de boton de "enviar" visualiza los resultados de la encuesta y te manda el correo):

Código PHP:

<html>
<
head>
<
title>Encuesta</title>
<
meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
<
style type="text/css"></style>
<
link rel="stylesheet" href="../css/style.css" type="text/css"/>
<
script type="text/javascript" src="../js/script.js"></script>
</head>

<body onload="cambiarTitulo()">
<div class="contenido">
<div class="anuncio">Realiza la siguiente encuesta </div>
<form action="resultados_encuestaES.jsp"  method="post">


     <table class="box-table-encuesta" >
<colgroup>
        <col class="box-first-encuesta" />
</colgroup>
        <tr><td><input type="hidden" name="pregunta_1" value="Nombre de la empresa">Nombre de la empresa</td><td><input type="text" name="respuesta_1"></td></tr>
        <tr><td><input type="hidden" name="pregunta_2" value="Nombre y Apellidos">Nombre y Apellidos</td><td><input type="text" name="respuesta_2"></td></tr>
        <tr><td colspan="2"><input class="enviar"  type="submit" value="Vista previa"></td></tr>
        
        </table>
    </form>
    </div>
    </body>

</html> 
resultado_encuesta.jsp

Código:
<html>
<head>
<title>Resultados encuesta</title>

<style type="text/css"></style>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
<link rel="stylesheet" href="../css/style.css" type="text/css"/>
<script type="text/javascript" src="../js/script.js"></script>
</head>
<%@ page language="java" %>
<%@ page import = "notas.MailSender"%>
<body onload="cambiarTitulo()">
<div class="contenido">

<%
              

/*enviamos el mensaje */
MailSender ms = new MailSender(); 

boolean result = ms.send("smtp.dominio.com","[email protected]","[email protected]","Subject", true, "<b>" + "Prueba enío de correo" + "</b>" <-- EL CONTENIDO DE TU CORREO,true);   
/*creamos la tabla */  	
	   
	   int numero = 0;	   
	   String respuesta = request.getParameter("respuesta_" + numero);
	   String pregunta = request.getParameter("pregunta_" + numero);	   
	 
	   
	   
	   out.print("<div class='formulario'>");
	   out.print("<div class='anuncio'> Resultado de la encuesta enviado a Soporte GSIS </div> <br/><br/>");	
	   
 			while (numero++ <2){
		   
 		   
 			
		   out.print("<div class='pregunta'>");
		   out.print(numero+ "." + request.getParameter("pregunta_" + numero));
		   out.print("</div><div class='respuesta'>");
		   out.print(request.getParameter("respuesta_" + numero));
		   out.print("</div>");		   
 			
	   }
	   
	   
 			out.print("</div>");	
	 %>
	
	 
	 </div>
	 
	</body>
</html>

No se si me he explicado bien, si hay alguna duda por si algún dia le sirve a alguien esto, ya comentareis ^^



Saludos :)

Etiquetas: contenido, correo, mandar
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 13:54.