Unable to send email via google smtp on centos VPS

12,351

Solution 1

Even if the Gmail account credentials are correct, Google may still block authentication attempt, suspecting a robot mail sender. To fix it, make sure you are logged in using the same Gmail account in your browser, and then open the link below and step through the process of verification:

https://accounts.google.com/b/0/DisplayUnlockCaptcha

This will allow access to your Gmail account for about 10 minutes. Be sure to try your code within this time frame.

This trick helped me about half a year ago, hope nothing has been changed since then.

Solution 2

Whenever a script tries to login automatically, Gmail generally blocks the script. To enable login through script do this:

  1. Go here https://security.google.com/settings/security/activity?hl=en&pli=1
  2. In the list of signin, select the one which was blocked and contains the IP of your server.
  3. Under Unusual activity click Change and Recognize the activity as yours.

If you do not have the activity in the list goto https://accounts.google.com/b/0/DisplayUnlockCaptcha and then try.

Both Tricks worked for me many times.

Share:
12,351
Lovepreet Singh Batth
Author by

Lovepreet Singh Batth

Updated on June 04, 2022

Comments

  • Lovepreet Singh Batth
    Lovepreet Singh Batth almost 2 years

    I am trying to send email via google SMTP.

    The code is working fine in my local windows PC in tomcat. But i got this error on my centos VPS

    org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.googlemail.com:465 
    

    Here is code, please check it -

    // Create the email message
    HtmlEmail email = new HtmlEmail();
    
    email.setHostName("smtp.googlemail.com");
    email.setSmtpPort(465);
    email.setAuthenticator(new DefaultAuthenticator("username", "password"));
    email.setSSLOnConnect(true);
    
    email.addTo(e_mail, f_name+" "+l_name);
    email.setFrom("[email protected]", "something.com - Account activation");
    email.setSubject("something.com - Account activation email");
    
      // embed the image and get the content id
    URL url = new URL("http://something.com/out.php/i6964_logo-email.gif");
    String cid = email.embed(url, "BizzKiss logo");
    
      // set the html message
    email.setHtmlMsg("<html><body>Something</body></html>");
    
      // set the alternative message
    email.setTextMsg("Your email client does not support HTML messages");
    email.setTLS(true);
      // send the email
    email.send();
    
    out.println("Email sent to "+e_mail+"<br/>Please check your email for activation message.Not found? Please check your spam folder.");
    
    
    
    org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.googlemail.com:465
        at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1401)
        at org.apache.commons.mail.Email.send(Email.java:1428)
        at org.apache.jsp.email_jsp._jspService(email_jsp.java:104)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
        at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
        at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
        at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:724)
    Caused by: javax.mail.AuthenticationFailedException: 534-5.7.14  Please log in via your web browser and then try again.
    534-5.7.14 Learn more at https://support.google.com/mail/bin/answer.py?answer=787
    534 5.7.14 54 qf7sm12328634pac.14 - gsmtp
    
        at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:826)
        at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:761)
        at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:685)
        at javax.mail.Service.connect(Service.java:317)
        at javax.mail.Service.connect(Service.java:176)
        at javax.mail.Service.connect(Service.java:125)
        at javax.mail.Transport.send0(Transport.java:194)
        at javax.mail.Transport.send(Transport.java:124)
        at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1391)
        ... 30 more
    

    Please check the stacktrace and please tell me what is wrong

  • Donn Lee
    Donn Lee over 10 years
    In my case, my script is on a VPS so I don't have a way to load any url with a browser. What I did: Changed my gmail pw. Gmail > Settings > Accounts. Then in Google Accounts they listed suspicious logins that were blocked by google (these were my script's attempted logins). Then I clicked the option "Yes, that was me". After that, my script worked (using the new pw).