Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

javax.mail.AuthenticationFailedException is thrown while sending email in java

Tags:

java

I am beginner in java and I want to send an email in java, for that I am using this code in Java. But my code is throwing an exception, and I need a heads-up why…

This is stack trace of exception:

javax.mail.AuthenticationFailedException: 534-5.7.14 <https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbsNX 534-5.7.14 No6jJbDc4l7fZ_WLdBD0sNHIIp_nLvplRMm0bYFBnZBF_XOyVvNSdd1FenDZJPwBTFQyRH 534-5.7.14 lriPK3myMm-dXkW3zK0-6XpO7BzI8hfRcByG1k7YiVzXlddTvs7QhjtgCWNcrzMBuPhoof 534-5.7.14 GjME2TgYzXJVHz5MV98nRnr_kq-kP7RmgOtX3IQHLwM5E8QGBC9-2THVQr_Ch_U0-1nZsc 534-5.7.14 yoPuNEw> Please log in via your web browser and then try again. 534-5.7.14 Learn more at 534 5.7.14 https://support.google.com/mail/bin/answer.py?answer=78754 wr6sm26888533wjc.24 - gsmtp      at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:892)     at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:814)     at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:728)     at javax.mail.Service.connect(Service.java:364)     at javax.mail.Service.connect(Service.java:245)     at SendEmail.sendFromGMail(SendEmail.java:50)     at SendEmail.main(SendEmail.java:18) sent 

This is my code

import java.util.*; import javax.mail.*; import javax.mail.internet.*;  public class SendEmail {      private static String USER_NAME = "me";     private static String PASSWORD = "xyz";     private static String RECIPIENT = "[email protected]";      public static void main(String[] args) {         String from = USER_NAME;         String pass = PASSWORD;         String[] to = { RECIPIENT };         String subject = "Java send mail example";         String body = "Welcome to JavaMail!";          sendFromGMail(from, pass, to, subject, body);         System.out.println("sent");     }      private static void sendFromGMail(String from, String pass, String[] to, String subject, String body) {         Properties props = System.getProperties();         String host = "smtp.gmail.com";         props.put("mail.smtp.starttls.enable", "true");         props.put("mail.smtp.host", host);         props.put("mail.smtp.user", from);         props.put("mail.smtp.password", pass);         props.put("mail.smtp.port", "587");         props.put("mail.smtp.auth", "true");          Session session = Session.getDefaultInstance(props);         MimeMessage message = new MimeMessage(session);          try {             message.setFrom(new InternetAddress(from));             InternetAddress[] toAddress = new InternetAddress[to.length];              for( int i = 0; i < to.length; i++ ) {                 toAddress[i] = new InternetAddress(to[i]);             }              for( int i = 0; i < toAddress.length; i++) {                 message.addRecipient(Message.RecipientType.TO, toAddress[i]);             }              message.setSubject(subject);             message.setText(body);             Transport transport = session.getTransport("smtp");             transport.connect(host, from, pass);             transport.sendMessage(message, message.getAllRecipients());             transport.close();         }         catch (AddressException ae) {             ae.printStackTrace();         }         catch (MessagingException me) {             me.printStackTrace();         }     } } 
like image 918
Mahira Khan Avatar asked Aug 16 '14 14:08

Mahira Khan


1 Answers

I had the same problem! Google prevents access for less secure apps.

This is how I solved it:

  • Log in from your browser to that email account.
  • Go to https://www.google.com/settings/security/lesssecureapps
  • You will see Turn off or Turn on. Click on Turn on, then try your code again. It should work now.
like image 99
Sazib Avatar answered Sep 18 '22 18:09

Sazib