본문 바로가기
IT/JAVA

JAVA SMTP MAIL getInstance 와 getdefaultinstance 차이

by rimilove 2023. 6. 20.
반응형

JAVA  SMTP  MAIL 을 보낼때 설정하는 Properties 중  session.getInstance 와 getdefaultinstance 의 차이를 적어보려고 합니다.

 

1.  session.getInstance

session.getInstance(Properties props, Authenticator authenticator):
getInstance()는 Properties 객체와 Authenticator 객체를 매개변수로 받습니다.
Properties 객체는 이메일 서버와 관련된 속성을 설정하기 위해 사용됩니다. 

예를 들어, SMTP 호스트, 포트, 인증 여부 등을 설정할 수 있습니다.
Authenticator 객체는 필요한 경우 이메일 계정의 인증 정보를 제공하기 위해 사용됩니다. 

이메일 서버가 인증을 요구하는 경우 Authenticator 객체를 통해 사용자 이름과 비밀번호를 제공할 수 있습니다.

 

예시 

Properties properties = new Properties();

properties.put("mail.smtp.host", "smtp.example.com");
properties.put("mail.smtp.port", "587");
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");

Authenticator authenticator = new Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("username", "password");
    }
};

Session session = Session.getInstance(properties, authenticator);

 

2. Session.getDefaultInstance

 

getDefaultInstance()는 Properties 객체만 매개변수로 받습니다.
getDefaultInstance()는 JavaMail의 기본 설정을 사용하여 세션을 반환합니다. 

일반적으로 JavaMail의 기본 설정은 Properties 객체에서 미리 정의된 속성들을 사용하며, 시스템의 기본 메일 세션을 반환합니다.
getDefaultInstance()는 한 번 호출되면 동일한 세션을 반환하므로, 여러 번 호출해도 동일한 설정을 유지합니다.

 

이  경우 password 가 설정 되어 있지 않아도 기본 설정 세션으로 권한을 연결합니다. 

 

Properties properties = new Properties();
properties.put("mail.smtp.host", "smtp.example.com");
properties.put("mail.smtp.port", "587");
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.starttls.enable", "true");

Session session = Session.getDefaultInstance(properties);

 

 

 

일반적으로 getInstance() 메서드를 사용하여 세션을 얻는 것이 더 유연하고 맞춤 설정할 수 있는 방법입니다. 

그러나 getDefaultInstance()는 간단한 설정으로 기본 세션을 얻는 데 유용할 수 있습니다. 

상황과 요구에 따라 적절한 메서드를 선택하여 사용하면 됩니다. 

 

 

 

반응형