我想做一個可以發送電子郵件到任何指定收件人(gmail)的函數。我正面臨的問題是當我嘗試提供在gmail中使用雙向身份驗證的憑據時,我的身份驗證失敗。通過帳戶沒有雙向身份驗證,它工作正常。那麼我需要做些什麼來使事情發生在啓用雙向認證的情況下?通過雙向認證的gmail帳戶中的java發送電子郵件
以下是我用來發送電子郵件的代碼。
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;
}
}
我檢查了鏈接並獲得了一個特定於應用程序的密碼,並且我能夠成功登錄到瀏覽器。但是在這裏的代碼中,我需要指定那個密碼。因爲它也生成應用程序特定的密碼後仍然給我錯誤。 – ankurtr 2011-12-23 22:06:18
有趣。前一段時間,當我遇到這種情況時,谷歌smtp服務給了我一個雙向auth特定的錯誤信息。你碰巧檢查過嗎? – Friek 2011-12-23 22:16:56
是的,我只是在說這個。我得到名爲「javax.mail.AuthenticationFailedException:535-5.7.1需要應用程序特定的密碼」的錯誤。那麼該怎麼做才能解決這個問題? – ankurtr 2011-12-23 22:19:17