Tenho um trabalho da escola que tenho que pesquisar sobre como enviar email em .jsf e criar um projeto…
Quando executo e preencho o formulário aparece a mensagem de erro da classe IndexController.java “Erro! Ocorreu um erro ao enviar a mensagem.” e estou perdida sem saber como resolver.
Segue os códigos para análise:
index:
[code]<?xml version='1.0' encoding='UTF-8' ?>
Enviando Email <h:outputLabel value="De: "/>
<h:inputText id="de" value="#{MensagemBean.de}" required="true" requiredMessage="Seu email é obrigatório!"/>
<h:message for="de"/>
<h:outputLabel value="Título: "/>
<h:selectOneMenu id="titulo" value="#{MensagemBean.titulo}" rendered="true" requiredMessage="Selecione o Assunto!">
<f:selectItem itemValue="0" itemLabel="Selecione:"/>
<f:selectItem itemValue="1" itemLabel="Dúvidas"/>
<f:selectItem itemValue="2" itemLabel="Sugestões"/>
<f:selectItem itemValue="3" itemLabel="Reclamações"/>
<f:selectItem itemValue="4" itemLabel="Outro"/>
</h:selectOneMenu>
<h:message for="titulo"/>
<h:outputLabel value="Mensagem:"/>
<h:inputTextarea id="mensagem" value="#{MensagemBean.mensagem}" rows="6" cols="50"/> <br/>
<h:message for="mensagem"/>
<h:commandButton value="Enviar" action="#{EmailBean.enviaEmail()}"/>
</h:panelGrid>
</h:form>
</h:body>
[/code]
classe Mensagem.java:
[code]import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name=“MensagemBean”)
@RequestScoped
public class Mensagem {
private static final String destino = "kbyte.tcc@gmail.com"; //o destino tem o meu email para que eu receba
//private String destino;
private String titulo;
private String mensagem;
private String de; //a pessoa coloco o seu email que será enviado para mim
public String getDestino() {
return destino;
}
/public void setDestino(String destino) {
this.destino = destino;
}/
public String getMensagem() {
return mensagem;
}
public void setMensagem(String mensagem) {
this.mensagem = mensagem;
}
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
public String getDe() {
return de;
}
public void setDe(String de) {
this.de = de;
}
}[/code]
Classe EmailUtils.java:
[code]import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.Email;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name=“EmailUtilsBean”)
@RequestScoped
public class EmailUtils {
private static final String HOSTNAME = “smtp.gmail.com”;
private static final String USERNAME = “kbyte.tcc”; //nome do usuário
private static final String PASSWORD = “**********”; //senha do email (tirei a senha para não ser hackeada rs)
private static final String EMAILORIGEM = "kbyte.tcc@gmail.com"; //email do gmail
/private SimpleEmail email;
public EmailUtils() {
this.email = new SimpleEmail();
}/
public static Email conectaEmail() throws EmailException {
Email email = new SimpleEmail();
email.setHostName(HOSTNAME);
email.setSmtpPort(587);
email.setAuthenticator(new DefaultAuthenticator(USERNAME, PASSWORD));
email.setTLS(true);
email.setFrom(EMAILORIGEM);
return email;
}
public static void enviaEmail(Mensagem mensagem) throws EmailException {
Email email = new SimpleEmail();
email = conectaEmail();
email.setSubject(mensagem.getTitulo());
email.setMsg(mensagem.getMensagem());
email.addTo(mensagem.getDestino());
String resposta = email.send();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "E-mail enviado com sucesso de: " + mensagem.getDe(), “Informação”));
}
/*public void enviaEmail(Mensagem mensagem) throws EmailException {
email.setHostName(HOSTNAME);
email.setAuthentication(USERNAME, PASSWORD);
email.setSSL(true);
email.setFrom(EMAILORIGEM);
email.addTo(mensagem.getDestino());
email.setSubject(mensagem.getTitulo());
email.setMsg(mensagem.getMensagem());
email.send();
}*/
}
[/code]
Classe IndexController.java:
[code]import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import org.apache.commons.mail.EmailException;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.swing.JOptionPane;
@ManagedBean(name=“EmailBean”)
@RequestScoped
public class IndexController {
private Mensagem mensagem = new Mensagem();
public Mensagem getMensagem() {
return mensagem;
}
public void setMensagem(Mensagem mensagem) {
this.mensagem = mensagem;
}
public void enviaEmail() {
try {
EmailUtils.enviaEmail(mensagem);
} catch (EmailException ex) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, “Erro! Ocorreu um erro ao enviar a mensagem.”, “Erro”));
Logger.getLogger(IndexController.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void limpaCampos() {
mensagem = new Mensagem();
}
}[/code]