简体   繁体   中英

How to solve javax.mail.AuthenticationFailedException?

I try to send mail using below code but I am getting Exception like.

javax.mail.AuthenticationFailedException
    at javax.mail.Service.connect(Service.java:306)
    at javax.mail.Service.connect(Service.java:156)
    at javax.mail.Service.connect(Service.java:105)
    at javax.mail.Transport.send0(Transport.java:168)
    at javax.mail.Transport.send(Transport.java:98)
    at mail.MailTest.sendMailSSL(MailTest.java:116)

Please any one help me how can I solve it.

Here is my code.Thanks

String mailBODY = "<h3>Hi this is my test Mail</h3>;

        final String username = "username@gmail.com";
        final String password = "password";

        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "587");

        Session session = Session.getInstance(props, new GMailAuthenticator(username, password));

        try {

            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("TEST"));
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(test@gmail.com));
            message.setSubject("Mail subject test");
            message.setContent(mailBODY,"text/html; charset=utf-8");

            Transport.send(message);
            System.out.println("mail has been send");

        } catch (MessagingException e) {
            e.printStackTrace();
        }

Try adding props and sending like this:

            Properties props = System.getProperties();
            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, null);
            MimeMessage message = new MimeMessage(session);
// ...

Transport transport = session.getTransport("smtp");
            transport.connect(host, from, pass);
            transport.sendMessage(message, message.getAllRecipients());
            transport.close();

我在谷歌帐户上启用了两步验证后出现此错误

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM