Отправка электронной почты через Java в учетной записи Gmail с двусторонней аутентификацией

Я хочу создать функцию, которая может отправлять электронную почту любому указанному получателю (gmail). Проблема, с которой я столкнулся, заключается в том, что моя аутентификация не выполняется, когда я пытаюсь предоставить учетные данные, которые используют двустороннюю аутентификацию в Gmail. С учетной записью, не имеющей двусторонней аутентификации, все работает нормально. Итак, что мне нужно сделать, чтобы все произошло с включенной двусторонней аутентификацией?

Ниже приведен код, который я использую для отправки электронной почты.

public static boolean sendMail(String fromMail, String fromPassword, String toMail, String message) {
        try {
            final String user = fromMail, password = fromPassword;
            Properties prop = new Properties();
            prop.setProperty("mail.smtp.host", "smtp.gmail.com");
            prop.setProperty("mail.smtp.port", "465");
            prop.setProperty("mail.smtp.auth", "true");
            prop.setProperty("mail.smtp.ssl.enable", "true");
//            prop.put("mail.debug", "true");

//            prop.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

            Session sess = Session.getDefaultInstance(prop, new Authenticator() {

                @Override
                protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
                    return new javax.mail.PasswordAuthentication(user, password);
                }
            });

//            Session sess=Session.getDefaultInstance(prop);

            sess.setDebug(true);

            Message msg = new MimeMessage(sess);

            msg.setFrom(new InternetAddress(fromMail));
            msg.setRecipient(Message.RecipientType.TO, new InternetAddress(toMail));
            msg.setText(message);
            msg.setContent(message, "text/html");


            Transport.send(msg);
            return true;
        } catch (MessagingException msgEx) {
            msgEx.printStackTrace();
            return false;
        }
    }
7
задан BalusC 23 December 2011 в 21:53
поделиться