내 신청서가 임시로 이메일을 보내야합니다. javamail의 getDefaultSession과 getTransport를 사용하여 메시지를 보내고 예상대로 작동합니다.javamail 세션 전송을 열어 두어도 괜찮습니까?
그러나 전송 시간이 오래 걸리는 것으로 나타났습니다. 전송 당 최대 7 초가 소요될 수 있습니다. 나는이 같은 단계를 무너 뜨리는 경우
Transport transport = session.getTransport("smtp");
transport.connect();
transport.sendMessage(msg, addresses)
transport.close();
을 ... 나는, 때마다 시간의 거의 모든 걸리는 연결() 호출이 있다고 볼 수 있습니다.
내가 발견 한 모든 예제는 전송, 연결, 전송, 연결 해제를 수행합니다. 물론 그들은 모두 단발적 인 예이거나 한 번의 호출로 대량의 이메일을 전송합니다.
나는이처럼, 난 그냥 열려있는 연결을 떠날 수 생각 :
Transport transport = session.getTransport("smtp");
if (!transport.isConnected())
transport.connect();
transport.sendMessage(msg, addresses)
을 (여기에, 그의 변형있다 : java mail keeping Transport object connected).
나는 어떤 종류의 종료 후크에서 결국 그것을 닫아야 할 것이다. 그리고 나는 폴백을 가져야 만 할 수도있다. (연결이 끊어져도 전송이 깨닫지 못한다면). 그러나 응용 프로그램 수명 동안 이것을 열어 두지 않는 이유가 있습니까?
덕분에, 알라
안녕하세요 토마스, 저에게 감사드립니다. 정확히 내가 바라는 바였습니다. 나는 실제로 싱글 톤 'EmailSender'인스턴스 내에서 사용하려고 계획하고 있으므로 이것이 좋을 것입니다. – Alastair
이 접근 방식은 내 대답 – Yura