반응형

참고

http://java.sun.com/products/javamail/index.jsp
http://java.sun.com/javase/technologies/desktop/javabeans/glasgow/jaf.html
http://java.sun.com/developer/onlineTraining/JavaMail/contents.html

http://java.sun.com/products/javamail/javadocs/index.html
관련 시리즈
http://javacan.madvirus.net/main/search/search.tle?type=all&keyword=mail

주로 작성된 메일을 송신하고 수신하는 API를 제공하는 것이다. 이러한 기능은

메일 서버의 역할과는 구별되는 것이다.


메일 서버는 송신된 메일을 받아들이고 메일 내용을 저장하거나 재전송을 하는  Agent 역할을 한다.


JavaMail Package는 메일 서버에게 메일을 전송하고 메일 서버에 저장된 메일을 수신하는데 유용한 클레스 및 API를 제공한다.


ex) MicroSoft사의 OutLook


 JavaMail API를 구조적으로 살펴보면 우선 메시지 구성, 저장, 수신 구조를 추상화해놓은absctruct layer가 있다. 이러한 추상 계층의 목적은  특정 프로토콜과는 상관없이 메일 구조 체계를 제공하겠다는 목적이다. 즉 인터넷 메일 뿐만 아니라 모바일이나 또 다른 메일 체계에도 적용되는 구조를 제공하는 것이다.


 이러한 추상 계층 이외에 JavaMail API는 가장 흔히 사용하는 인터넷 메일을 위한 클레스 및 API를 제공한다. 이 클레스들은 기본적인 abstruct layer를 인터넷 메일이하는 측면에서 구현 즉 implementation한 클레스들이다. JavaMail API를 가지고 직접적으로 응용프로그램을 작성할 수 있는 방법은 이 인터넷 메일 구현 계층을 사용하는 것이다.


인터넷 메일에 대하여 잘 이해하려면 우선 인터넷 메일 시스템에서 사용되는 통신 프로토콜 표준에 대하여 이해할 필요가 있다. 이러한 프로토콜들은 IETF(Internet Engineering Task Force)에 의하여

소정의 절차를 거친 후 RFC라는 형태로 발표되는데 인터넷 메일과 관련된 주요 표준 프로토콜은

SMTP, POP3, IMAP, MIME 등이 있다. (http://www.ietf.org/)


- SMTP(Simple Mail Transfer Protocol)

RFC 0788에서 정의 되었는데 이후에도 많은 수정이 있다.

SMTP는 기본적으로 인터넷 메일을 서버로 송신하고 서버가 이 메일을 수신하는데 필요한 커멘트 및 표준 절차등을 정의하고 있다.

Java Mail API의 주요 구성 요소

이 글에서는 Java Mail API의 모든 클래스에 대해서 알아보지는 않을 것이며, 가장 중심적인 역할을 하는 클래스인 javax.mail.Session, javax.mail.Store, javax.mail.Transport, javax.mail.Folder, javax.mail.Message 클래스에 대해서 알아볼 것이다. 실제로 이 다섯개의 클래스만 알맞게 사용하면 매우 손쉽게 메일 시스템을 구축할 수 있다.

javax.mail.Session

javax.mail.Session은 Java Mail API를 사용하는 출발점이 되는 클래스로서 다양한 메일 프로토콜을 위한 서비스 프로바이더 구현(Service Provider Implementation; SPI)을 나타내는 클래스를 로딩하고 제어할 수 있는 메소드를 제공하고 있다. 예를 들어, javax.mail.Store 클래스의 인스턴스는 javax.mail.Session 클래스를 통해서 구할 수 있다. (여기서 서비스 프로바이더는 Java Mail API를 이용하여 구현 클래스 계층을 제공하는 개발자는 벤더를 의미한다. 현재 Java Mail API는 IMAP, SMTP, POP3 프로토콜에 대한 구현 계층을 제공하고 있다.)

javax.mail.Store

javax.mail.Store 클래스는 특정한 메일 프로토콜을 이용하여 메일의 읽기, 쓰기, 감시, 검색 등을 할 수 있도록 해 준다. Session 클래스를 사용하여 구할 수 있으며, 메일 저장소를 추상화한 javax.mail.Folder에 접근할 수 있도록 해 준다. 서비스 프로바이더는 Store 클래스를 알맞게 구현해야 한다.

javax.mail.Folder

javax.mail.Folder 클래스는 메일 메세지에 계층적 구조를 제공하며 메일 메세지에 접근할 수 있도록 해 준다. 메일 메세지는 javax.mail.Message 클래스의 객체로 표현된다. 서비스 프로바디어는 Folder 클래스를 알맞게 구현해야 한다.

javax.mail.Transport

javax.mail.Transport 클래스는 특정한 프로토콜을 사용하여 메세지를 전송할 때 사용된다. 서비스 프로바이더는 이 클래스를 알맞게 구현해야 한다.

javax.mail.Message

javax.mail.Message 클래스는 주제, 수신자의 이메일주소, 발송자의 이메일 주소, 보낸 날짜와 같은 실제 이메일 메세지의 세부 사항을 나타낸다. 서비스 프로바이더는 자신이 사용하는 프로토콜에 알맞게 Message를 구현해야 한다.

Java Mail API와 JAF

Java Mail API는 메시지에 다양한 포맷을 사용할 수 있도록 하기 위해 JAF를 사용한다. JAF는 별도의 확장 API로서 다양한 데이터 형식을 이용하여 작업하는 방법을 통합하기 위해 작성되었다. 실제로 JAF를 이용하면 간단한 텍스트 데이터에서부터 이미지, 비디오 등의 매우 복잡한 멀티 미디어 데이터로 구성된 문서까지 다양한 데이터를 제공할 수 있다.

+ Recent posts