javamail验证器不工作
这是我向smtp服务器发送邮件的配置 但它不使用会话验证器并强制我从控制台输入凭证,当我从控制台输入凭证时,它会成功地发送邮件,这部分配置是错误的javamail验证器不工作,java,smtp,jakarta-mail,gssapi,authenticator,Java,Smtp,Jakarta Mail,Gssapi,Authenticator,这是我向smtp服务器发送邮件的配置 但它不使用会话验证器并强制我从控制台输入凭证,当我从控制台输入凭证时,它会成功地发送邮件,这部分配置是错误的 Properties properties = new Properties(); //clear it later properties.setProperty("mail.debug", "true"); properties.put("mail.smtp.socketFactory.port", "5
Properties properties = new Properties();
//clear it later
properties.setProperty("mail.debug", "true");
properties.put("mail.smtp.socketFactory.port", "587");
properties.put("mail.smtp.auth", true);
properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.smtp.host", "mail.example.com");
properties.put("mail.smtp.port", "587");
properties.put("mail.smtp.host", "mail.example.com");
properties.put("mail.smtp.sasl.enable","true");
properties.put("mail.smtp.sasl.mechanisms","GSSAPI");
properties.put("mail.smtp.sasl.authorizationid","admin");
properties.put("mail.smtp.sasl.realm","EXAMPLE.COM");
System.setProperty( "sun.security.krb5.debug", "true");
System.setProperty( "java.security.krb5.realm", "EXAMPLE.COM");
System.setProperty( "java.security.krb5.kdc", "ipa.example.com");
URL jaasConfigURL = this.getClass().getResource("jaas.conf");
jaasConfigURL.getFile();
String jaasConfigFile = jaasConfigURL.getFile();
System.out.println(jaasConfigFile);
System.setProperty( "java.security.auth.login.config", jaasConfigFile);
System.setProperty( "javax.security.auth.useSubjectCredsOnly", "false");
session = Session.getInstance(properties, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication("admin", "password");
}
});
session.setDebug(true);
MimeMessage mime = new SMTPMessage(session);
mime.setFrom(new InternetAddress(from));
mime.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
mime.setSubject("test");
mime.setText("hello world!");
Transport.send(mime);
还有我的jaas.conf文件
krb5_initiate{
com.sun.security.auth.module.krb5LoginModule required
useTicketCache="true"
doNotPrompt="true"
debug="true";
};
如中所述,GSSAPI SASL实现不使用任何SASL回调,这就是从未使用JavaMail验证器的原因。SASL文档还描述了如何使用JAAS登录Kerberos。我自己没有这方面的经验。如果这不起作用,你可能会在办公室里找到更多的帮助。@BillShannon非常感谢比尔