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>
<form id="sendemail" name="sendemail" method="post" action="sendemail.do">
<table width="60%" border="2">
<tr>
<td><label>Nome Completo:</label>
<br>
<input type="text" name="nome" value="" size=50/>
</td></tr
><tr><td><label>E-mail:</label>
<br>
<input type="text" name="email" value="" size=50 />
</td></tr>
<tr><td><label>Assunto:</label>
<br>
<input type="text" name="assunto" value="" size=50 />
</td></tr>
<tr><td><label>Mensagem:</label>
<br>
<textarea name="resultado" cols="77" rows="20"></textarea></td></tr>
</table>
<label>
<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ê!')"/>
</label>
<input type="reset" value="Cancelar" name="btnCancelar" />
<br />
</form>
</body>
</html>
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"/>
</action>[/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