Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JavaMail with Gmail: 535-5.7.1 Username and Password not accepted

I get this error when I try to send a mail using JavaMail API. I am sure that the username and password are 100% correct. The Gmail account which I'm connecting is an older account, because they say it takes time for it to work with new accounts.

 DEBUG SMTP RCVD: 535-5.7.1 Username and Password not accepted. Learn more at  535 5.7.1 http://mail.google.com/support/bin/answer.py?answer=14257 x35sm3011668 wfh.6  javax.mail.SendFailedException: Sending failed;   nested exception is:         javax.mail.AuthenticationFailedException         at javax.mail.Transport.send0(Transport.java:218)         at javax.mail.Transport.send(Transport.java:80)         at Main.(Main.java:41)         at Main.main(Main.java:51) 

and this is my code:

import javax.mail.*; import javax.mail.internet.*; import java.util.*;  public class Main {     String  d_email = "[email protected]",             d_password = "pass",             d_host = "smtp.gmail.com",             d_port  = "465",             m_to = "[email protected]",             m_subject = "Testing",             m_text = "testing email.";      public Main()     {         Properties props = new Properties();         props.put("mail.smtp.user", d_email);         props.put("mail.smtp.host", d_host);         props.put("mail.smtp.port", d_port);         props.put("mail.smtp.starttls.enable","true");         props.put("mail.smtp.auth", "true");         props.put("mail.smtp.debug", "true");         props.put("mail.smtp.socketFactory.port", d_port);         props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");         props.put("mail.smtp.socketFactory.fallback", "false");          SecurityManager security = System.getSecurityManager();          try         {             Authenticator auth = new SMTPAuthenticator();             Session session = Session.getInstance(props, auth);             session.setDebug(true);             MimeMessage msg = new MimeMessage(session);             msg.setText(m_text);             msg.setSubject(m_subject);             msg.setFrom(new InternetAddress(d_email));             msg.addRecipient(Message.RecipientType.TO, new InternetAddress(m_to));             Transport.send(msg);         }         catch (Exception mex)         {             mex.printStackTrace();         }      }      public static void main(String[] args)     {         Main blah = new Main();     }      private class SMTPAuthenticator extends javax.mail.Authenticator     {         public PasswordAuthentication getPasswordAuthentication()         {             return new PasswordAuthentication(d_email, d_password);         }     } } 
like image 794
simplyblue Avatar asked Jun 03 '10 10:06

simplyblue


2 Answers

I had same issue : I refer this link, I have followed below steps it worked for me.

By default Gmail account is highly secured. When we use gmail smtp from non gmail tool, email is blocked. To test in our local environment, make your gmail account less secure as

  1. Login to Gmail.
  2. Access the URL as https://www.google.com/settings/security/lesssecureapps
  3. Select "Turn on"
like image 51
Gautam Avatar answered Oct 13 '22 23:10

Gautam


The given code snippet works fine on my Gmail account, so this problem lies somewhere else. Did you follow the link given in the error message? It contains the following hints:

  • Make sure that you've entered your full email address (e.g. [email protected])
  • Re-enter your password to ensure that it's correct. Keep in mind that passwords are case-sensitive.
  • Make sure your mail client isn't set to check for new mail too often. If your mail client checks for new messages more than once every 10 minutes, your client might repeatedly request your username and password.

Especially the last point is important. Google is very strict in this. If you're trying to connect Gmail for example more than 10 times in a minute programmatically, then you may already get blocked. Have a bit of patience, after some time it will get unblocked.

If you'd like more freedom in sending mails, I recommend to look for a dedicated mail host or to setup your own mail server, such as Apache James or Microsoft Exchange. I've already answered this in detail in one of your previous questions.

like image 34
BalusC Avatar answered Oct 14 '22 00:10

BalusC