[Resolvido]Problemas com CommonsMail

3 respostas
R

Boa tarde galera.

Seguinte, estou fazendo uma aplicação web (jsf 1.2 + postgres) e estou com certa dificuldade para mandar emails atravéz dela. Na minha aplicação, o cidadão vai se cadastrar, cadastrar um email e que já possui (@gmail, @hotmail…) para receber a confirmação do cadastro.
Estou usando um ex. em CommonsMail e já consegui enviar um email “teste” com ele. (de um email p/ ele mesmo, definindo eles no código fonte mesmo, apenas p/ teste eheh)

No meu bean ele está assim…

//meu CommonsMail.java
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;

public class CommonsMail {

    public CommonsMail() throws EmailException {
        
    }

    public void enviaEmailSimples() throws EmailException {
        SimpleEmail email = new SimpleEmail();
        email.setHostName("smtp.meuprovedor.edu.br"); 
        email.addTo("[email removido]", "Teste"); //destinatário
        email.setFrom("[email removido]", "yahooooll"); // remetente
        email.setSubject("Teste Email Projeto do Cassiano"); // assunto do e-mail
        email.setMsg("TESTE eheheh"); //conteudo do e-mail
        email.setAuthentication("cassiano", "minhasenha");
        email.setSmtpPort(25);    // porta smtp do meuprovedor
        email.send();
        
     }

    public void manda() throws EmailException{
        this.enviaEmailSimples();
    }

}

Meu facesconfig.xml

<faces-config version="1.2" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
    <managed-bean>
        <managed-bean-name>email</managed-bean-name>
        <managed-bean-class>pkgEmail.CommonsMail</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
</faces-config>

Minha página simples p/ teste…

//meu .jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<f:view>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
            <title>JSP Page</title>
        </head>
        
            <h:form>

            <h1><h:outputText value="Mandar Email"/></h1>
            <h:commandButton value="manda" action="#{email.manda}" />

            </h:form>
</f:view>

Meu problema está quando eu mudo o provedor de email do destinatário (vou mandar do [email removido] para [email removido] por exemplo), sendo que quando eu vou mandar o email ele da este erro.

HTTP Status 500 -

type Exception report

message

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

exception

javax.servlet.ServletException: #{email.manda}: org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.meuprovedor.edu.br:25

javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

root cause

javax.faces.FacesException: #{email.manda}: org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.meuprovedor.edu.br:25

com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:107)

javax.faces.component.UICommand.broadcast(UICommand.java:383)

javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)

javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)

com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)

com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)

com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)

javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

root cause

javax.faces.el.EvaluationException: org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.meuprovedor.edu.br:25

javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:91)

com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)

javax.faces.component.UICommand.broadcast(UICommand.java:383)

javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)

javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)

com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)

com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)

com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)

javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

root cause

org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.meuprovedor.edu.br:25

org.apache.commons.mail.Email.sendMimeMessage(Email.java:1242)

org.apache.commons.mail.Email.send(Email.java:1267)

pkgEmail.CommonsMail.enviaEmailSimples(CommonsMail.java:37)

pkgEmail.CommonsMail.manda(CommonsMail.java:42)

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

java.lang.reflect.Method.invoke(Method.java:597)

org.apache.el.parser.AstValue.invoke(AstValue.java:191)

org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)

org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)

javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)

com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)

javax.faces.component.UICommand.broadcast(UICommand.java:383)

javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)

javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)

com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)

com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)

com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)

javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

root cause

javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1 [email removido]: Relay access denied

com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1607)
com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:887)
javax.mail.Transport.send0(Transport.java:191)
javax.mail.Transport.send(Transport.java:120)
org.apache.commons.mail.Email.sendMimeMessage(Email.java:1232)
org.apache.commons.mail.Email.send(Email.java:1267)
pkgEmail.CommonsMail.enviaEmailSimples(CommonsMail.java:37)
pkgEmail.CommonsMail.manda(CommonsMail.java:42)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.apache.el.parser.AstValue.invoke(AstValue.java:191)
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
javax.faces.component.UICommand.broadcast(UICommand.java:383)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

root cause

com.sun.mail.smtp.SMTPAddressFailedException: 550 5.7.1 [email removido]: Relay access denied

com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1458)
com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:887)
javax.mail.Transport.send0(Transport.java:191)
javax.mail.Transport.send(Transport.java:120)
org.apache.commons.mail.Email.sendMimeMessage(Email.java:1232)
org.apache.commons.mail.Email.send(Email.java:1267)
pkgEmail.CommonsMail.enviaEmailSimples(CommonsMail.java:37)
pkgEmail.CommonsMail.manda(CommonsMail.java:42)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
org.apache.el.parser.AstValue.invoke(AstValue.java:191)
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
javax.faces.component.UICommand.broadcast(UICommand.java:383)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:447)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)

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

Alguém sabe como posso resolver isso?
Tenho que usar outras .jar, estilo Javamail?

Obrigado e desculpe se o email está grande, mas é que preciso resolver este problema logo…

3 Respostas

zoren

Nunca usei o Commons, mas eu sei que ele usa o JavaMail

e no JavaMail vc tem que informar seu email ocmpleto na autenticação

email.setAuthentication("[email removido]", "minhasenha");
R

Tentei aqui e da erro.

Quando funcionou, mandei apenas com meu login.

R

Seguinte galera, tentei fazer os teste em casa e lá funciona em partes.
Sempre que eu mando o email do remente @meuprovedor.edu.br (provedor da empresa) ele da erro. A menos que eu mande para um outro email @meuprovedor

Buenas, quando eu uso a configuração usada para rementente do gmail, (ssl=true, smtp = 465, etc) ele manda certinho p/ qualquer outro email.

O problema deve estar na configuração do nosso servidor de email… =/

Mas, se alguém tiver alguma outra altenativa que não use smtp (acho que assim ele iria enviar), falem por favor ehehe

Brigado.

Criado 28 de outubro de 2010
Ultima resposta 29 de out. de 2010
Respostas 3
Participantes 2