Sven Reichel
Sven Reichel

Reputation: 1

Email sending in a Java Webapplication

I'm writing a webapp in Java. In this webapp I will send emails to the users. When I execute the application I get an error message. I use the same source code in another Java program. In that program I get no errors.

Source code:

public class MailUtil {

public static Session getGMailSession(String user, String pass){
    final Properties props = new Properties();

    //Eigenschaften zum Sende einer Mail mit GMail
    props.setProperty("mail.smtp.host", "smtp.gmail.com");
    props.setProperty("mail.smtp.auth", "true");
    props.setProperty("mail.smtp.port", "465");
    props.setProperty("mail.smtp.socketFactory.port", "465");
    props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    props.setProperty("mail.smtp.socketFactory.fallback", "false");

    return Session.getInstance(props, new javax.mail.Authenticator(){
        @Override protected PasswordAuthentication getPasswordAuthentication(){
            return new PasswordAuthentication (props.getProperty("mail.pop3.user"),props.getProperty("mail.pop3.password"));
        }//endof Methode getPasswordAuthentication
    });//endOf getInstance
}//endOf Methode getGMailSession

//Die Methode postMail versendet eine Mail
public static void postMail(String recipient, String subject, String message){
    Session session = MailUtil.getGMailSession("user", "password");

    try{
        Message msg = new MimeMessage(session);
        msg.setSubject(subject);
        msg.setContent(message, "text/plain");
        msg.addRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
        Transport.send(msg);
    }
    catch(MessagingException e){
        System.out.println("Error in this Method");
        System.out.println("Cause: " +e.getMessage());
        e.printStackTrace();
    }
}
}

And here is the error message:

10:27:50,014 INFO  [stdout] (default task-16) **Error in this Method**
10:27:50,014 INFO  [stdout] (default task-16) Cause: failed to connect, no user name specified?
10:27:50,015 ERROR [stderr] (default task-16) javax.mail.AuthenticationFailedException: failed to connect, no user name specified?
10:27:50,016 ERROR [stderr] (default task-16)   at javax.mail.Service.connect(Service.java:376)
10:27:50,016 ERROR [stderr] (default task-16)   at javax.mail.Service.connect(Service.java:226)
10:27:50,016 ERROR [stderr] (default task-16)   at javax.mail.Service.connect(Service.java:175)
10:27:50,017 ERROR [stderr] (default task-16)   at javax.mail.Transport.send0(Transport.java:253)
10:27:50,017 ERROR [stderr] (default task-16)   at javax.mail.Transport.send(Transport.java:124)
10:27:50,017 ERROR [stderr] (default task-16)   at de.hskl.lernanalyse.utilities.MailUtil.postMail(MailUtil.java:50)
10:27:50,018 ERROR [stderr] (default task-16)   at de.hskl.lernanalyse.controller.TokenGenController.doGeneriereLink(TokenGenController.java:77)
10:27:50,018 ERROR [stderr] (default task-16)   at de.hskl.lernanalyse.controller.TokenGenController.doSendeEmail(TokenGenController.java:108)
10:27:50,018 ERROR [stderr] (default task-16)   at de.hskl.lernanalyse.controller.TokenGenController$Proxy$_$$_WeldClientProxy.doSendeEmail(Unknown Source)
10:27:50,019 ERROR [stderr] (default task-16)   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
10:27:50,025 ERROR [stderr] (default task-16)   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
10:27:50,025 ERROR [stderr] (default task-16)   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
10:27:50,026 ERROR [stderr] (default task-16)   at java.lang.reflect.Method.invoke(Method.java:606)
10:27:50,026 ERROR [stderr] (default task-16)   at javax.el.ELUtil.invokeMethod(ELUtil.java:308)
10:27:50,026 ERROR [stderr] (default task-16)   at javax.el.BeanELResolver.invoke(BeanELResolver.java:537)
10:27:50,027 ERROR [stderr] (default task-16)   at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:256)
10:27:50,027 ERROR [stderr] (default task-16)   at com.sun.el.parser.AstValue.invoke(AstValue.java:269)
10:27:50,027 ERROR [stderr] (default task-16)   at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304)
10:27:50,027 ERROR [stderr] (default task-16)   at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
10:27:50,028 ERROR [stderr] (default task-16)   at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
10:27:50,029 ERROR [stderr] (default task-16)   at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
10:27:50,029 ERROR [stderr] (default task-16)   at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
10:27:50,030 ERROR [stderr] (default task-16)   at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
10:27:50,031 ERROR [stderr] (default task-16)   at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
10:27:50,031 ERROR [stderr] (default task-16)   at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
10:27:50,032 ERROR [stderr] (default task-16)   at javax.faces.component.UICommand.broadcast(UICommand.java:315)
10:27:50,032 ERROR [stderr] (default task-16)   at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
10:27:50,033 ERROR [stderr] (default task-16)   at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
10:27:50,033 ERROR [stderr] (default task-16)   at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
10:27:50,034 ERROR [stderr] (default task-16)   at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
10:27:50,035 ERROR [stderr] (default task-16)   at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
10:27:50,035 ERROR [stderr] (default task-16)   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
10:27:50,035 ERROR [stderr] (default task-16)   at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
10:27:50,036 ERROR [stderr] (default task-16)   at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61)
10:27:50,037 ERROR [stderr] (default task-16)   at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
10:27:50,037 ERROR [stderr] (default task-16)   at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
10:27:50,038 ERROR [stderr] (default task-16)   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
10:27:50,039 ERROR [stderr] (default task-16)   at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113)
10:27:50,039 ERROR [stderr] (default task-16)   at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56)
10:27:50,040 ERROR [stderr] (default task-16)   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
10:27:50,041 ERROR [stderr] (default task-16)   at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45)
10:27:50,041 ERROR [stderr] (default task-16)   at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61)
10:27:50,042 ERROR [stderr] (default task-16)   at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
10:27:50,042 ERROR [stderr] (default task-16)   at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70)
10:27:50,043 ERROR [stderr] (default task-16)   at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
10:27:50,043 ERROR [stderr] (default task-16)   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
10:27:50,045 ERROR [stderr] (default task-16)   at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
10:27:50,045 ERROR [stderr] (default task-16)   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
10:27:50,053 ERROR [stderr] (default task-16)   at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)
10:27:50,053 ERROR [stderr] (default task-16)   at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240)
10:27:50,054 ERROR [stderr] (default task-16)   at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227)
10:27:50,054 ERROR [stderr] (default task-16)   at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73)
10:27:50,055 ERROR [stderr] (default task-16)   at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146)
10:27:50,055 ERROR [stderr] (default task-16)   at io.undertow.server.Connectors.executeRootHandler(Connectors.java:177)
10:27:50,056 ERROR [stderr] (default task-16)   at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:727)
10:27:50,056 ERROR [stderr] (default task-16)   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
10:27:50,056 ERROR [stderr] (default task-16)   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
10:27:50,057 ERROR [stderr] (default task-16)   at java.lang.Thread.run(Thread.java:745)

Upvotes: 0

Views: 183

Answers (2)

Bill Shannon
Bill Shannon

Reputation: 29971

First, fix all of these common mistakes.

Second, read this JavaMail FAQ entry on Gmail.

If you still can't get it to work and are getting the same error, tell us what debugging you've done to prove that you're specifying a user name when connecting. You might want to look at these debugging tips.

Upvotes: 0

Santhosh
Santhosh

Reputation: 8197

You have missed the ,

msg.setFrom(username);

method ,which should be configured to send the email from your account.

As docs says.

Set the "From" attribute in this Message. The value of this attribute is obtained from the property "mail.user". If this property is absent, the system property "user.name" is used.

And also read this thread JavaMail API, Gmail-Auth and setFrom

Upvotes: 2

Related Questions