Tôi muốn thực hiện một chức năng có thể gửi email đến bất kỳ người nhận được chỉ định nào (gmail). Vấn đề tôi đang phải đối mặt là xác thực của tôi không thành công khi tôi cố gắng cung cấp thông tin đăng nhập sử dụng xác thực hai chiều trong gmail. Với tài khoản không có xác thực hai chiều, nó hoạt động tốt. Vì vậy, những gì tôi phải làm để làm cho mọi thứ xảy ra với hai cách xác thực được kích hoạt?Gửi email qua java trong tài khoản gmail có xác thực hai chiều
Sau đây là mã mà tôi đang sử dụng để gửi email.
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;
}
}
Tôi đã kiểm tra các liên kết và có một mật khẩu dành riêng cho ứng dụng và tôi có thể đăng nhập thành công vào trình duyệt. Nhưng trong đoạn code ở đây ở một số nơi tôi cần phải xác định mật khẩu đó. Bởi vì nó vẫn còn cho tôi lỗi sau khi tạo mật khẩu ứng dụng cụ thể quá. – ankurtr
Thú vị. Một thời gian trước khi tôi chạy vào này, dịch vụ google smtp đã cho tôi một thông báo lỗi xác thực 2 chiều cụ thể. Bạn đã kiểm tra điều đó chưa? – Friek
vâng, tôi chỉ nói về điều đó thôi. tôi nhận được lỗi có tên là "javax.mail.AuthenticationFailedException: 535-5.7.1 Mật khẩu dành riêng cho ứng dụng được yêu cầu". Vậy phải làm gì để giải quyết điều đó? – ankurtr