Chcę utworzyć funkcję, która może wysyłać wiadomości e-mail do dowolnego określonego odbiorcy (gmail). Problem, który napotykam, polega na tym, że uwierzytelnianie nie powiedzie się, gdy próbuję podać dane uwierzytelniające, które korzystają z uwierzytelniania dwukierunkowego w Gmailu. Z kontem bez dwukierunkowego uwierzytelniania działa dobrze. Co muszę zrobić, aby wszystko działało z włączonymi uwierzytelnieniami dwukierunkowymi?Wysyłanie wiadomości e-mail przez java na koncie Gmail mającym dwukierunkowe uwierzytelnianie
Poniżej znajduje się kod, którego używam do wysyłania wiadomości e-mail.
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;
}
}
Sprawdziłem linki i otrzymałem jedno hasło specyficzne dla aplikacji i jestem w stanie pomyślnie zalogować się do przeglądarki. Ale w tym miejscu w pewnym miejscu muszę również podać to hasło. Ponieważ nadal daje mi błąd po wygenerowaniu hasła specyficznego dla aplikacji. – ankurtr
Interesujące. Jakiś czas temu, gdy wpadłem na to, google smtp service dał mi dwukierunkowy komunikat o błędzie specyficzny dla auth. Czy przypadkiem to sprawdziłeś? – Friek
tak, mówię tylko o tym. Otrzymuję ten błąd o nazwie "javax.mail.AuthenticationFailedException: 535-5.7.1 Wymagane jest hasło specyficzne dla aplikacji." Co więc zrobić, aby to rozwiązać? – ankurtr