사용자 이름과 암호를 지정할 필요없이 NTLM 인증과 함께 JavaMail API를 사용할 수 있지만 대신 현재 로그인 한 사용자의 자격 증명을 자동으로 사용합니까? (싱글 사인온)현재 사용자의 자격 증명을 사용하는 javamail NTLM 인증
내 클라이언트 프로그램 (회사 네트워크의 Windows 컴퓨터에서 실행되는)이 자격 증명을 지정하지 않고도 컴퓨터에서 릴레이를 허용하지 않고 전자 메일을 보낼 수있게하려는 것입니다. 보안 우려로 인해 네트워크. (결국 시스템 속성 오버라이드와 함께 log4j의 SmtpAppender와 함께이 작업을하고 싶지만 문제를 디버깅하기 위해 SSCCE를 아래에 만듭니다.)
내가 지정한 경우 성공적으로 NTLM 인증을 사용하여 전자 메일을 보낼 수 있습니다. 사용자 이름과 대응하는 유효한 Windows 암호 : 실패 535 5.7.3 인증 :
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class MailTest {
public static void main(String[] args) {
String from = "[email protected]";
String to = "[email protected]";
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.host", "myserver.mydomain");
props.put("mail.debug", "true");
props.put("mail.smtp.auth.mechanisms", "NTLM");
props.put("mail.smtp.auth.ntlm.domain", "mydomain");
final String username = "myusername";
final String password = "mypassword";
Session session =
Session.getInstance(props, new javax.mail.Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(to));
message.setSubject("Testing!");
message.setText("Hello world!");
Transport.send(message);
System.out.println("Sent message successfully");
} catch (MessagingException e) {
throw new RuntimeException(e);
}
}
}
나는이 javax.mail.Authentication FailedException 실패 빈 암호를 사용
.단순히 세션을 생성하는 코드를 교체 할 때 :
Session session = Session.getInstance(props);
후 다음 예외가 발생하고 난 시도가 서버에 연결을 시도하지 디버그 출력에서 볼 수 있습니다
Exception in thread "main" java.lang.RuntimeException: javax.mail.Authentication
FailedException: failed to connect, no password specified?
at MailTest.main(MailTest.java:51)
Caused by: javax.mail.AuthenticationFailedException: failed to connect, no passw
ord specified?
at javax.mail.Service.connect(Service.java:329)
at javax.mail.Service.connect(Service.java:176)
at javax.mail.Service.connect(Service.java:125)
at javax.mail.Transport.send0(Transport.java:194)
at javax.mail.Transport.send(Transport.java:124)
JavaMail 1.4.7을 사용하고 있습니다. –