我有一个自动java邮件应用程序,当我们的数据库中发生一些重要更新时,它会向用户发送自动邮件。它工作正常。然而它开始给我错误,我意识到它不起作用。
错误说: “请通过网络浏览器登录,然后重试。 在https://support.google.com/mail/bin/answer.py?answer=78754 l10sm7526045oev.7 - gsmtp“
了解更多信息我写的java邮件应用程序很庞大并且包含一些机密值(密码等),我决定编写一个示例演示来向您展示正在发生的事情。它给了我同样的错误。请假设已将javax.MAIL API导入到项目中。这就是我所拥有的:
public class MailDemo {
public static void main(String[] args) {
final String userName = "dummyEmail@gmail.com";
final String password = "dummyPassword";
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");//Smtp server address
props.put("mail.smtp.port", "587");//port for the smtp server
Session session = Session.getInstance(props, new Authenticator(){
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(userName, password);
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress("dummyEmail@gmail.com"));//from email address
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("dummyEmail@gmail.com"));//to email address
message.setSubject("My first Email");//Subject of the mail
message.setContent("<h1>This is a test email</h1>", "text/html; charset=utf-8");//Content of the mail
Transport.send(message);//send the message
System.out.println("Email Stiation:Done!");
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
答案 0 :(得分:0)
好吧,我发现了问题。实际上代码是正确的。这是gmail。它会阻止登录尝试。我认为gmail认为尝试不是真的。