Pages

Sunday, November 25, 2007

Trabajando con JavaMail

Después de darle la vuelta al internet encontré como utilizar el famoso JavaMail para enviar correos desde una JSP, el ejemplo que se muestra está en una JSP, pero se lo uede sacar a una clase que puede ser un managed bean para JSF o un JavaBean para tags JSP.

El codigo es el siguiente:

<%@page contentType="text/html">
<%@page pageEncoding="UTF-8"%>

<%@page import="java.util.*"%>
<%@page import="javax.mail.*"%>
<%@page import="javax.mail.internet.*"%>
<%@page import="javax.activation.*"%>



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<%
// SUBSTITUTE YOUR EMAIL ADDRESSES HERE!!!
String to = "nombre@dominio.com";
String from = "aqui va un correo propio del servidor donde lo subes";
// SUBSTITUTE YOUR ISP'S MAIL SERVER HERE!!!
String host = "el smtp server que tu proveedor de hosting te brinda";
//String host = "pop.gmail.com"; aqui se usa google, no se funcione

// Create properties, get Session
Properties props = new Properties();


// If using static Transport.send(),
// need to specify which host to send it to
props.setProperty("mail.smtp.starttls.enable", "true");
props.setProperty("mail.smtp.auth", "true");



// To see what is going on behind the scene
//props.put("mail.debug", "true");
Session ses = Session.getDefaultInstance(props);
ses.setDebug(true);

try {
// Instantiatee a message
MimeMessage msg = new MimeMessage(ses);

//Set message attributes
msg.setFrom(new InternetAddress(from));
msg.setRecipients(Message.RecipientType.TO, to);
msg.setSubject("SALUDOS DESDE JAVA MAIL");
msg.setSentDate(new Date());

// Set message content
msg.setText("AQUI VA EL MENSAJE DESDE JAVA MAIL");

//Send the message
Transport t = ses.getTransport("smtp");
t.connect("el smtp server que tu proveedor de hosting te brinda", -1, "el mail que enviara el correo", "el password del mail que enviara el correo");
t.sendMessage(msg, msg.getAllRecipients());
t.close();
}
catch (MessagingException mex) {
// Prints all nested (chained) exceptions as well
out.println(mex.toString());
}
catch (Exception e){
out.println(e.toString());
}


%>


</body>
</html>


A mi me funcionó perfecto, espero sirva a alguien más.´

Algunos recursos:

El mejor: http://www.chuidiang.com/java/herramientas/javamail/enviar-correo-javamail.php

http://www.chuidiang.com/chuwiki/index.php?title=Enviar_correos_con_JavaMail_y_Java

http://java.sun.com/products/javamail/javadocs/javax/mail/Service.html#connect()

http://www.programacion.com/java/tutorial/javamail/4/

http://lineadecodigo.com/2006/12/12/enviar-correo-en-copia-oculta-con-javamail/



Saludos

Un poco de JSF

Despues de buscar y rebuscar en la web, encontre lo que necesitaba a mi problema:

Problema: Deseo recuperar un valor del objeto "session" creado en una JSP, en un java bean, es decir necesito recuperar el objeto "session" en mi java bean.

Solucion: La soluciones genial porque no solo puedo recuperar los valores del objeto session, sino que puedo ponerle mas como estado de la sesion de un usuario, nombre del usuario a mostrarse, etc. En el java bean debo escribir el siguiente codigo:

-------------------------------------------------------------------------------------------------

import javax.faces.application.*;
import javax.faces.context.*;
import javax.servlet.http.*;
public static HttpSession currentContext()
{
ExternalContext G = FacesContext.getCurrentInstance().getExternalContext();
HttpSession session = (HttpSession) G.getSession(true);

return session;
}

-------------------------------------------------------------------------------------------------

Esto me devuelve la sesion actual y de ahi puedo hacer lo que quiera :)

Yo necesitaba recuperar el valor generado de simpleCaptcha (el proyecto de SourceForge para generar captchas), ya que este valor se guarda en el objeto "session", escribi la siguiente funcion:

-----------------------------------------------------------------------------------

public String recuperarCodigoCaptcha(){
String captchaGenerado;
HttpSession session = currentContext();
captchaGenerado = (String)session.getAttribute(nl.captcha.servlet.Constants.SIMPLE_CAPCHA_SESSION_KEY);
System.out.println("CODIGO CAPTCHA GENERADO = " + captchaGenerado);
return captchaGenerado;
}

------------------------------------------------------------------------------------

De ahi ya se puede jugar con el valor generado del captcha :D

Parece que no se ve toda la sentencia para tomar el valor del codigo generado captcha, pues al final va: "Y);" eso es todo, es en donde dice: "....Constants.SIMPLE_CAPCHA_SESSION_KE"

Parte de este codigo lo obtuve de:

http://community.sgdotnet.org/blogs/shunjie/archive/2005/09/08/20726.aspx

Mas recursos de lo mismo en:

http://forum.java.sun.com/thread.jspa?threadID=5159649&messageID=9607156

http://www.exadel.com/tutorial/jsf/jsftutorial-guessnumber.html

http://balusc.blogspot.com/2006/06/communication-in-jsf.html#AccessingTheFacesContextInsideHttpServletOrFilter

http://forum.java.sun.com/thread.jspa?threadID=757152&messageID=4325532

Saludos people :D

Thursday, November 22, 2007

Too much love will kill you

Vaya!!! hace tiempo no venia por aca..!!!

Bueno anyway, buscando en el famoso youtube algunos vides de musica, busque quizas al mejor grupo de la historia del rock, "Queen" y encontre la cancion mas increible y maravillosa que existe en este planeta, cantanda por quien a mi modo de ver debio ser el vocalista principal de este inolvidable grupo, Bryan May y adivinen con quien.....el legendario Luciano (+) que increible cancion hace muchisimo tiempo que no la escuchaba y "verla" y escucharla en las voces de estos dos maestros fue algo indescriptible, hasta casi lloro de la emocion, por lo que quise postearla y poner tambien el video para que disfruten de esta GENIAL cancion :D aunque lo mas probable es que ninguno de los integrantes de Queen lea este post: gracias muchachos por hacer de la musica algo incomparable y por dar a la humanidad himnos a la vida..!!!!

Saludos Freddie (+), John, Roger y Bryan...!!!!