Email em jsp

Olá pessoal…

Estou com a seguinte duvida…

Estou criando uma aplicação em JSP e estou tentando fazer um formulário para envio de email mas está dando erro…

Minha class java ficou assim:
Obs: Fiz a partir de um tutorial que encontrei no guj


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package modelo;

 import  java.util.Properties;  
 import javax.mail.Message;  
 import javax.mail.Session;  
 import javax.mail.Transport;  
 import javax.mail.internet.InternetAddress;  
 import javax.mail.internet.MimeMessage;   
 import javax.mail.Authenticator;  
 import javax.mail.PasswordAuthentication;  

/**
 *
 * @author daniele.leao
 */
 public  class SendMail {  
       
     private String mailSMTPServer;  
     private String mailSMTPServerPort;  
       
     /* 
      * quando instanciar um Objeto ja sera atribuido o servidor SMTP do GMAIL  
      * e a porta usada por ele 
      */  
     public SendMail() { //Para o GMAIL   
         mailSMTPServer = "smtp.gmail.com";  
         mailSMTPServerPort = "465";  
     }  
     /* 
      * caso queira mudar o servidor e a porta, so enviar para o contrutor 
#      * os valor como string 
      */  
     SendMail(String mailSMTPServer, String mailSMTPServerPort) { //Para outro Servidor  
        this.mailSMTPServer = mailSMTPServer;  
        this.mailSMTPServerPort = mailSMTPServerPort;  
    }  
       
     public void sendMail(String from, String to, String subject, String message) {  
         
         Properties props = new Properties();  
          
                 // quem estiver utilizando um SERVIDOR PROXY descomente essa parte e atribua as propriedades do SERVIDOR PROXY utilizado  
                 /* 
                 props.setProperty("proxySet","true"); 
                 props.setProperty("socksProxyHost","192.168.155.1"); // IP do Servidor Proxy 
                 props.setProperty("socksProxyPort","1080");  // Porta do servidor Proxy 
                 */  
   
         props.put("mail.transport.protocol", "smtp"); //define protocolo de envio como SMTP  
         props.put("mail.smtp.starttls.enable","true");   
         props.put("mail.smtp.host", mailSMTPServer); //server SMTP do GMAIL  
         props.put("mail.smtp.auth", "true"); //ativa autenticacao  
         props.put("mail.smtp.user", from); //usuario ou seja, a conta que esta enviando o email (tem que ser do GMAIL)  
         props.put("mail.debug", "true");  
         props.put("mail.smtp.port", mailSMTPServerPort); //porta  
         props.put("mail.smtp.socketFactory.port", mailSMTPServerPort); //mesma porta para o socket  
         props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");  
         props.put("mail.smtp.socketFactory.fallback", "false");  
           
         //Cria um autenticador que sera usado a seguir  
         SimpleAuth auth = null;  
         auth = new SimpleAuth ("nomedousuario","senha");  
           
         //Session - objeto que ira realizar a conexão com o servidor  
         /*Como há necessidade de autenticação é criada uma autenticacao que 
          * é responsavel por solicitar e retornar o usuário e senha para  
          * autenticação */  
         Session session = Session.getDefaultInstance(props, auth);  
         session.setDebug(true); //Habilita o LOG das ações executadas durante o envio do email  
   
         //Objeto que contém a mensagem  
         Message msg = new MimeMessage(session);  
   
         try {  
             //Setando o destinatário  
             msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to));  
             //Setando a origem do email  
             msg.setFrom(new InternetAddress(from));  
             //Setando o assunto  
             msg.setSubject(subject);  
             //Setando o conteúdo/corpo do email  
             msg.setContent(message,"text/plain");  
   
         } catch (Exception e) {  
             System.out.println(">> Erro: Completar Mensagem");  
             e.printStackTrace();  
         }  
           
         //Objeto encarregado de enviar os dados para o email  
         Transport tr;  
         try {  
             tr = session.getTransport("smtp"); //define smtp para transporte  
             /* 
              *  1 - define o servidor smtp 
              *  2 - seu nome de usuario do gmail 
              *  3 - sua senha do gmail 
              */  
             tr.connect(mailSMTPServer, "nomedousuario", "senha");  
             msg.saveChanges(); // don't forget this  
             //envio da mensagem  
             tr.sendMessage(msg, msg.getAllRecipients());  
             tr.close();  
         } catch (Exception e) {  
             // TODO Auto-generated catch block  
             System.out.println(">> Erro: Envio Mensagem");  
             e.printStackTrace();  
         }  
   
     }  
 }  
   
 //clase que retorna uma autenticacao para ser enviada e verificada pelo servidor smtp  
 class SimpleAuth extends Authenticator {  
     public String username = null;  
     public String password = null;  
   
   
     public SimpleAuth(String user, String pwd) {  
         username = user;  
         password = pwd;  
     }  
   
     protected PasswordAuthentication getPasswordAuthentication() {  
         return new PasswordAuthentication (username,password);  
     }  
 }   

Minha Action

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import modelo.SendMail;
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 struts.form.EmailForm;

/**
 *
 * @author daniele.leao
 */
public class EmailAction extends Action {
    public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response){
        HttpSession session = request.getSession();
        
        SendMail send = new SendMail();
        EmailForm eForm = new EmailForm();
        String from= "dani.leao89@gmail.com";
        
        send.sendMail(eForm.getEmail(),from,eForm.getAssunto(),eForm.getResultado());
        
        session.setAttribute("sendemail", send);
        return mapping.findForward("sendemail");
        
    }
}

Meu JSP

<%-- 
    Document   : faleconosco
    Created on : 01/04/2010, 04:01:51
    Author     : Dani
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!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>
     <%@ taglib uri="http://struts.apache.org/tags-html" prefix="h" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
    <body bgcolor="#898e77">
        <b><font color="#000080" size=5>Fale Conosco</font>
        &lt;form  id="sendemail" name="sendemail" method="post" action="sendemail.do"&gt;
        &lt;table width="60%" border="2"&gt;
            &lt;tr&gt;
            &lt;td&gt;&lt;label&gt;Nome Completo:&lt;/label&gt;
            <br>
            &lt;input  type="text" name="nome" value="" size=50/&gt;
    &lt;/td&gt;&lt;/tr
    &gt;&lt;tr&gt;&lt;td&gt;&lt;label&gt;E-mail:&lt;/label&gt;
            <br>
            &lt;input  type="text" name="email" value="" size=50 /&gt;
    &lt;/td&gt;&lt;/tr&gt;
    
    &lt;tr&gt;&lt;td&gt;&lt;label&gt;Assunto:&lt;/label&gt;
            <br>
            &lt;input  type="text" name="assunto" value="" size=50 /&gt;
    &lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;&lt;td&gt;&lt;label&gt;Mensagem:&lt;/label&gt;
    <br>
    &lt;textarea name="resultado" cols="77" rows="20"&gt;&lt;/textarea&gt;&lt;/td&gt;&lt;/tr&gt;
    
        &lt;/table&gt;
        &lt;label&gt;
      &lt;input name="btnEnviar" type="submit" id="btnEnviar" value="Enviar"  onclick="alert('E-mail enviado com Sucesso.Em breve um de nossos atendentes irá entrar em contato com você!')"/&gt;
    &lt;/label&gt;
    &lt;input type="reset" value="Cancelar" name="btnCancelar" /&gt;
<br />
&lt;/form&gt;
    &lt;/body&gt;
&lt;/html&gt;

Meu Form

public class EmailForm extends ActionForm{
    
    private String nome;
    private String email;
    private String resultado;
    private String assunto;

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getResultado() {
        return resultado;
    }

    public void setResultado(String resultado) {
        this.resultado = resultado;
    }

    public String getAssunto() {
        return assunto;
    }

    public void setAssunto(String assunto) {
        this.assunto = assunto;
    }

Struts.config.xml

[code]
<action input="/faleconosco.jsp" name=“EmailForm” path="/sendemail" scope=“session” type=“struts.action.EmailAction”>
<forward name=“sendemail” path="/faleconosco.jsp"/>

&lt;/action&gt;[/code]

E o erro que me aparece é esse


type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

javax.servlet.ServletException: java.lang.NullPointerException
	org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:520)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:427)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)


root cause 

java.lang.NullPointerException
	java.util.Hashtable.put(Hashtable.java:396)
	modelo.SendMail.sendMail(SendMail.java:59)
	struts.action.EmailAction.execute(EmailAction.java:30)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.

Pessoal alguem tem um help pra me dá?
Nao entendo nada d email em java

Obrigada