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

Problemas javamail y codificación

Estas en el tema de Problemas javamail y codificación en el foro de Java en Foros del Web. Amigos tengo un problema serio con el envio de correos, este es el código: smtpServer = "localhost"; Properties props = new Properties(); props.setProperty("mail.transport.protocol", "smtp"); props.setProperty("mail.host", ...
  #1 (permalink)  
Antiguo 25/08/2007, 08:07
 
Fecha de Ingreso: abril-2003
Mensajes: 64
Antigüedad: 21 años
Puntos: 0
Problemas javamail y codificación

Amigos tengo un problema serio con el envio de correos, este es el código:

smtpServer = "localhost";
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", smtpServer);

Session session = Session.getDefaultInstance(props, null);

session.setDebug(true);
Transport transport = session.getTransport();
MimeMessage msg = new MimeMessage(session);
msg.setSubject("RedVim - Confirmación de registro de contacto");
msg.setFrom(new InternetAddress(from));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
MimeMultipart multipart = new MimeMultipart();
BodyPart messageBodyPart = new MimeBodyPart();
String htmlText = "<img src=\"cid:image\">";
htmlText = htmlText +"<h2>RED VENEZOLANA DE INVESTIGACIÓN EN MICROALGAS \"RedVIM\"</h2>";
htmlText = htmlText +"<h2>Confirmación de registro de Contacto</h2>";
htmlText = htmlText +"<h3>Gracias por haber visitado nuestro sitio web: www.redvim.com.ve</h3>";
htmlText = htmlText +"<h3>Revisaremos sus comentarios</h3>";
System.out.println(htmlText);
System.out.println(mensajeAEnviar);

htmlText =htmlText + "<div style=\"background-color: #CED9C4;border: 1px solid #FFB901;height: 45px;" +
"text-align: center;background-position: center;width: 400px;margin-left: 70px;margin-top: 20px;" +
"margin-bottom: 20px;font-weight: bold;\">" +mensajeAEnviar+"</div>";


messageBodyPart.setContent(htmlText, "text/html");
multipart.addBodyPart(messageBodyPart);
messageBodyPart = new MimeBodyPart();
DataSource fds = new FileDataSource (ruta+"imagenes/redvimlogo.jpg");
messageBodyPart.setDataHandler(new DataHandler(fds));
messageBodyPart.setHeader("Content-ID","<image>");
multipart.addBodyPart(messageBodyPart);
msg.setContent(multipart);

transport.connect();
transport.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO));
transport.close();

El problema es que lo que está en htmlText que lo escribo en el método lo que tiene que ver con acentos y ñ lo envia perfecto, pero lo que está en el parámetro mensajeEnviar lo coloca todo más, de hecho System.out.println(htmlText); esto lo imprime bien por consola pero el siguiente no
System.out.println(mensajeAEnviar);


AYUDA POR FAVOR
  #2 (permalink)  
Antiguo 25/08/2007, 09:38
 
Fecha de Ingreso: agosto-2003
Mensajes: 272
Antigüedad: 20 años, 8 meses
Puntos: 0
Re: Problemas javamail y codificación

donde declaras la variable mensajeAEnvia? por que no la encuentro falta codigo??
  #3 (permalink)  
Antiguo 25/08/2007, 10:14
 
Fecha de Ingreso: abril-2003
Mensajes: 64
Antigüedad: 21 años
Puntos: 0
Re: Problemas javamail y codificación

Gracias por responder amigo

la variable MensajeAenviar viene por parametro al método que envía el correo, pero ya ubique de donde viene la falla, esa variable es enviada por XMLHTTPrequest, es decir desde ajax y ahí comienza todo el problema, sabes como puede resolver esto

ESTOY DESESPERADO
  #4 (permalink)  
Antiguo 25/08/2007, 12:25
 
Fecha de Ingreso: agosto-2003
Mensajes: 272
Antigüedad: 20 años, 8 meses
Puntos: 0
Re: Problemas javamail y codificación

Vijate en los metodos de XMLHTTPRequest más que nada en los getElement("nombre") si usas uno de estos metodos sacas lo que viene por url, me parece que lo que estas haciendo mal es sacar la info del XMLHTTPRequest.

Si no pone el código que usas antes de llamar al metodo.

Saludos
  #5 (permalink)  
Antiguo 25/08/2007, 15:29
 
Fecha de Ingreso: abril-2003
Mensajes: 64
Antigüedad: 21 años
Puntos: 0
Re: Problemas javamail y codificación

Gracias phpnet

te coloco el código javascript que envia via ajax:


function createXMLRequest(){
if (window.XMLHttpRequest) {// Mozilla,Safari,...
return new XMLHttpRequest();
}else if(window.ActiveXObject) {// IE
try {
return new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
return new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){}
}
}
}




var ResponderContacto_ = createXMLRequest();

var request;
var actualizarTBody;
var id_Contacto=0;
var elemento = null;
var READY_STATE_UNINITIALIZED=0;
var READY_STATE_LOADING=1;
var READY_STATE_LOADED=2;
var READY_STATE_INTERACTIVE=3;
var READY_STATE_COMPLETE=4;

var indice ="";




function ResponderContacto(id,elemen,mensaje){
id_Contacto = id;
elemento = elemen;
indice = document.getElementById('esperaImagenEliminar-'+id_Contacto).innerHTML;
ResponderContacto_.onreadystatechange=onReadyState ChangeResponder;
ResponderContacto_.open('POST','contactosResponder .do', true);
ResponderContacto_.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ResponderContacto_.setRequestHeader("Accept-Charset", "UTF-8");
ResponderContacto_.send("id="+id_Contacto+"&mensaj e="+encodeURI(mensaje)+"&responder=enviar");
}

function onReadyStateChangeResponder() {
var ready=ResponderContacto_.readyState;
var data=null;
if (ready==READY_STATE_COMPLETE){
var response = null;
response = ResponderContacto_.responseText;
var fechaIdent;
retorno = response.substring(0,5);
if (retorno == "exito")
{
document.getElementById('respuestacorreo-'+id_Contacto).style.display = 'none';
document.getElementById('mensaje-'+id_Contacto).style.display = '';
setTimeout("timer()", 3500);
}else if(retorno[0] == 'NOOK') alert('El Contacto no pudo ser eliminado...Intente más tarde');
}else if(ready== READY_STATE_LOADING){
document.getElementById('esperaImagenEliminar-'+id_Contacto).innerHTML = '<img src="imagenes/indicator_white.gif" alt="indicadorEspera"/>';
}else if(ready== READY_STATE_LOADED){
document.getElementById('esperaImagenEliminar-'+id_Contacto).innerHTML = indice;
}
}

function timer()
{
setTimeout("timer()", 3500);
document.getElementById('nuevo-'+id_Contacto).style.display = 'none';
document.getElementById('fila-'+id_Contacto).className = 'contenidoCeldaLeido';
}


Y este es mi clase que recibe la data, la procesa y envía:


package contactenos.accion;

import java.sql.SQLException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import contactenos.modelo.ManejadorContactenos;
import contactenos.modelo.estructura.Contacto;
import java.io.IOException;
import java.io.PrintWriter;
import otusNet.EnvioCorreo;

public class ResponderAccion extends Action
{
public ActionForward execute (ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws SQLException, IOException
{
Contacto contacto = new Contacto();

String rutaOrigen = getServlet().getServletContext().getRealPath("/");
ManejadorContactenos MC = new ManejadorContactenos();
EnvioCorreo envio = new EnvioCorreo();

response.setContentType("text/html");
PrintWriter out = response.getWriter();

if(request.getParameter("responder").equals("envia r")) {
try
{
contacto = MC.consultarContacto(request.getParameter("id"));

envio.envioFormatoContacto("", "RedVim- Respuesta del Contacto",
contacto.getEmail(), "[email protected]",
contacto.getNombre(),request.getParameter("mensaje "),rutaOrigen);
MC.CambiarStatus("1", contacto.getId());
out.println("exito");
out.flush();
}catch( Exception e)
{
out.println("error");
out.flush();
}
}
if(request.getParameter("responder").equals("elimi nar")) {
try
{
MC.EliminarContacto(request.getParameter("id"));

out.println("exito");
out.flush();
}catch( Exception e)
{
out.println("error");
out.flush();
}
}


if(request.getParameter("responder").equals("marca r")) {
try
{
contacto = MC.consultarContacto(request.getParameter("id"));
if (contacto.getStatus().equals("1"))
{
MC.CambiarStatus("0", contacto.getId());
out.println("exito/0");
}
else
{
MC.CambiarStatus("1", contacto.getId());
out.println("exito/1");
}
out.flush();
}catch( Exception e)
{
out.println("error");
out.flush();
}
}
return null;
}
}


Por último el método que envia el coreo (pero mal)

public void envioFormatoContacto( String mensaje, String asunto, String to, String from, String nombre,String mensajeAEnviar, String ruta)
{
try { //ESTO ES LO QUE NECESITAS PARA ENVIAR EL CORREO, CLARO CON LOS VALORES DE LAS VARIABLES

smtpServer = "localhost";
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", smtpServer);

Session session = Session.getDefaultInstance(props, null);

session.setDebug(true);
Transport transport = session.getTransport();
MimeMessage msg = new MimeMessage(session);
msg.setSubject("RedVim - Confirmación de registro de contacto");
msg.setFrom(new InternetAddress(from));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
MimeMultipart multipart = new MimeMultipart();
BodyPart messageBodyPart = new MimeBodyPart();


String htmlText = "<img src=\"cid:image\">";
htmlText = htmlText +"<h2>RED VENEZOLANA DE INVESTIGACIÓN EN MICROALGAS \"RedVIM\"</h2>";
htmlText = htmlText +"<h2>Confirmación de registro de Contacto</h2>";
htmlText = htmlText +"<h3>Gracias por haber visitado nuestro sitio web: www.redvim.com.ve</h3>";
htmlText = htmlText +"<h3>Revisaremos sus comentarios</h3>";
System.out.println(htmlText);

htmlText =htmlText + "<div style=\"background-color: #CED9C4;border: 1px solid #FFB901;height: 45px;" +
"text-align: center;background-position: center;width: 400px;margin-left: 70px;margin-top: 20px;" +
"margin-bottom: 20px;font-weight: bold;\">" +mensajeAEnviar+"</div>";


messageBodyPart.setContent(htmlText, "text/html");
multipart.addBodyPart(messageBodyPart);
messageBodyPart = new MimeBodyPart();
DataSource fds = new FileDataSource (ruta+"imagenes/redvimlogo.jpg");
messageBodyPart.setDataHandler(new DataHandler(fds));
messageBodyPart.setHeader("Content-ID","<image>");
multipart.addBodyPart(messageBodyPart);
msg.setContent(multipart);

transport.connect();
transport.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO));
transport.close();

} catch (Exception ex) {ex.printStackTrace();}
}
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 19:30.