Foren

Envío de email

Daniel Roman, geändert vor 8 Jahren.

Envío de email

New Member Beiträge: 2 Beitrittsdatum: 21.12.15 Neueste Beiträge
Buenaaaaas a toodooos! soy nuevo en el foro!
estoy implementando un formulario que envie un email a una determinada direccion de correo. electronico. Por diversas razones no puedo utilizar el portlet web form y he hecho un portlet nuevo. He visto por la web que se puede hacer con java mail pero no me queda claro como hacerlo. ¿Tengo que modificar el portal.ext.properties? ¿alguien me sugiere alguna otra forma? a ver si podeis orientarme!!
Hasta otra, gracias!
Dani.
thumbnail
Guillermo Rodolfo Mangieri, geändert vor 8 Jahren.

RE: Envío de email

Regular Member Beiträge: 166 Beitrittsdatum: 10.09.12 Neueste Beiträge
hola, daniel...

creo que todos caminamos esa de iniciar trabajos y las cosas del marketplace no nos atienden por un o otro motivo.

un portlet tiene algunos puntos clave.

Para mi, liferay-portlet.xml y portlet.xml son el eje del portlet, porque en estos archivos es donde configuras una gran cantidad de cosas.

Basicamente, tenes que aplicar el concepto de mvc, donde tenes un nivel de view en docroot donde pones las jsp y un controlador como action donde pones los métodos java.

La view.jsp es la primer página visible de tu portlet... haciendo tu formulário (usando las tags de alloy, liferay-ui y otras que encontras en los javadocs de developer.liferay.com) podés direccionar tu submit del form para un action dentro de la class que informastes como action en tus xml. A partir de ahi accionas las bibliotecas de mail que quieras usar.

Un consejo... tené mucho cuidado con cuales puertas usas en los servers, porque a veces empresas de hospedaje cierran las puertas.

cualquier cosa... estoy de vacaciones, pero es cuando más voy a conocer gente en este mundo maravilloso liferay.

si puedo te respondo rápido, si de alguna manera ayudo.
thumbnail
Santiago Perez, geändert vor 8 Jahren.

RE: Envío de email

Junior Member Beiträge: 53 Beitrittsdatum: 23.03.12 Neueste Beiträge
Hola Daniel.
Primero tienes que configurar el servidor de correo que vas a utilizar para enviar los emails (máquina y puerto). Puedes hacerlo a través del portal-ext.properties o desde el panel de control en la opción (versión 6.2): Administración -> Panel de Control -> Administración del servidor -> Correo

Después en Java el envío es muy sencillo, éste es el código:

import javax.mail.internet.InternetAddress;
import com.liferay.mail.service.MailServiceUtil;
import com.liferay.portal.kernel.mail.MailMessage;

String emailBody = "This is the email text";
String emailSubject = "This is the subject";
boolean destinatarios = false;

InternetAddress from = new InternetAddress("myaddress@domain.es","My name Admin");
InternetAddress[] to = null: //Objetos InternetAddress con el email de los destinatarios
InternetAddress[] cc = null; //Objetos InternetAddress con el email de los destinatarios en copia
InternetAddress[] cco = null; //Objetos InternetAddress con el email de los destinatarios en copia oculta

MailMessage message = new MailMessage(); 
message.setFrom(from);

if((to != null) && (to.length > 0)){
	message.setTo(to);
	destinatarios = true;
}
if((cc != null) && (cc.length > 0)){
	message.setCC(cc);
	destinatarios = true;
}
if((cco != null) && (cco.length > 0)){
	message.setBCC(cco);
	destinatarios = true;
}
	 
if(destinatarios){
	message.setSubject(emailSubject);
	message.setBody(emailBody);
	message.setHTMLFormat(true)
	MailServiceUtil.sendEmail(message);
}


Saludos,
Santiago
thumbnail
Santiago Perez, geändert vor 8 Jahren.

RE: Envío de email

Junior Member Beiträge: 53 Beitrittsdatum: 23.03.12 Neueste Beiträge
Hola Daniel
¿A qué jar te refieres? ¿Qué has puesto en el directorio lib del portlet? ¿es el "java-mail.jar"?

Para hacer funcionar el envío de email desde Liferay no es necesario colocar nada en el "lib" del portlet, es el propio Liferay el que ya tiene todas las librerías integradas.

La excepción que muestras se produce típicamente cuando existe la misma clase repetida en varios jar y con versiones diferentes, con lo que si has puesto un jar en tu portlet que tenga la clase "javax.mail.internet.InternetAddress" y no coincide su versión con el que tiene Liferay, el classloader lanzará esa excepción.

Saludos,
Santiago
Daniel Roman, geändert vor 8 Jahren.

RE: Envío de email

New Member Beiträge: 2 Beitrittsdatum: 21.12.15 Neueste Beiträge
Buenas!
sí a ese jar me refiero. Ok, voy a probarlo a ver si funciona y ya os cuento!
Otra cosa, esto que estoy haciendo del envío de email, se puede probar en local??
Graciaaasss!
Saludos!