JavaMail API-핵심 클래스
JavaMail API는 이메일 메시지를 보내고, 읽고, 삭제하는 데 사용되는 일부 인터페이스와 클래스로 구성됩니다. JavaMail API에는 많은 패키지가 있지만 Java Mail API에서 자주 사용되는 두 가지 주요 패키지 인 javax.mail 및 javax.mail.internet 패키지를 다룹니다 . 이러한 패키지에는 모든 JavaMail 핵심 클래스가 포함되어 있습니다. 그들은:
수업 | 기술 |
---|---|
javax.mail.Session | API의 키 클래스입니다. 다중 스레드 개체는 연결 팩토리를 나타냅니다. |
javax.mail.Message | 전자 메일 메시지를 모델링하는 추상 클래스입니다. 서브 클래스는 실제 구현을 제공합니다. |
javax.mail.Address | 메시지의 주소 (발신 및 수신 주소)를 모델링하는 추상 클래스입니다. 서브 클래스는 특정 구현을 제공합니다. |
javax.mail.Authenticator | 메일 서버에서 메일 자원을 보호하는 데 사용되는 추상 클래스입니다. |
javax.mail.Transport | 전자 메일 메시지를 보내기위한 메시지 전송 메커니즘을 모델링하는 추상 클래스입니다. |
javax.mail.Store | 메시지 저장 및 검색을 위해 메시지 저장소 및 해당 액세스 프로토콜을 모델링하는 추상 클래스입니다. 스토어는 폴더로 나뉩니다. |
javax.mail.Folder | 메일 메시지 폴더를 나타내는 추상 클래스입니다. 하위 폴더를 포함 할 수 있습니다. |
javax.mail.internet.MimeMessage | 메시지는 추상 클래스이므로 하위 클래스와 함께 작동해야합니다. 대부분의 경우 MimeMessage를 사용합니다. MimeMessage는 MIME 유형과 헤더를 이해하는 이메일 메시지입니다. |
javax.mail.internet.InternetAddress | 이 클래스는 RFC822 구문을 사용하는 인터넷 이메일 주소를 나타냅니다. 일반적인 주소 구문은 [email protected] 또는 Personal Name <[email protected]> 형식 입니다. |
이 수업을 자세히 공부하고 다음 장에서 각각을 사용하여 예제를 공부하겠습니다.
세션 클래스
세션 클래스는은 JavaMail API의 기본 클래스이며 하위 클래스되지 않습니다. 세션 객체는 구성 설정 및 인증을 모두 처리하는 API JavaMail에 대한 연결 팩토리로서 작용한다.
세션 개체는 다음과 같은 방법으로 만들 수 있습니다.
JNDI 서비스에 저장된 관리 객체를 조회하여
InitialContext ctx = new InitialContext(); Session session = (Session) ctx.lookup("usersMailSession");
usersMailSession 은 세션 객체의 관리 객체로 사용되는 JNDI 이름 객체입니다. usersMailSession 은 메일 서버 호스트 이름, 메일을 보내는 사용자 계정 및 세션 개체에서 지원하는 프로토콜과 같은 정보를 포함하여 이름 / 값 쌍으로 필요한 매개 변수를 사용하여 만들고 구성 할 수 있습니다.
Session 개체를 만드는 또 다른 방법은 java.util.Properties 개체를 사용 하여 메일 서버 이름, 사용자 이름, 암호 및 기타 정보와 같은 일부 기본 정보를 재정의 할 수있는 프로그래밍 방식을 기반으로합니다 . 전체 애플리케이션에서 공유됩니다.
Session 클래스 의 생성자 는 private 입니다. 따라서 Session 클래스는 Session 개체 를 가져 오는 두 가지 메서드 (아래에 나열 됨)를 제공 합니다.
getDefaultInstance(): getDefaultInstance () 메서드를 사용하여 세션 개체를 가져 오는 방법에는 두 가지가 있습니다. 기본 세션을 반환합니다.
public static Session getDefaultInstance(Properties props) public static Session getDefaultInstance(Properties props,Authenticator auth)
getInstance(): getInstance () 메서드를 사용하여 세션 개체를 가져 오는 방법에는 두 가지가 있습니다. 새 세션을 반환합니다.
public static Session getInstance(Properties props) public static Session getInstance(Properties props,Authenticator auth)
메시지 클래스
Session 객체가 생성되었으므로 이제 보낼 메시지 생성으로 넘어갑니다. 메시지 유형은 javax.mail.Message 입니다.
메시지 는 추상 클래스입니다. 따라서 하위 클래스 javax.mail.internet.MimeMessage 클래스가 주로 사용됩니다.
메시지를 생성하려면 MimeMessage 클래스 생성자에 세션 객체를 전달해야합니다. 예를 들면 :
MimeMessage message=new MimeMessage(session);
메시지 객체가 생성되면 그 안에 정보를 저장해야합니다. 메시지 클래스는 javax.mail.internet 동안 javax.mail.Part 인터페이스를 구현합니다. MimeMessage는 javax.mail.internet.MimePart를 구현합니다. message.setContent () 또는 mimeMessage.setText ()를 사용하여 콘텐츠를 저장할 수 있습니다.
MimeMessage 클래스에서 일반적으로 사용되는 메서드는 다음과 같습니다.
방법 기술 public void setFrom (주소 주소) from 헤더 필드를 설정하는 데 사용됩니다. public void addRecipients (Message.RecipientType 유형, 문자열 주소) 수신자 유형에 지정된 주소를 추가하는 데 사용됩니다. public void setSubject (문자열 제목) 제목 헤더 필드를 설정하는 데 사용됩니다. public void setText (String textmessage) 텍스트 / 일반 MIME 유형을 사용하여 텍스트를 메시지 콘텐츠로 설정하는 데 사용됩니다.
주소 등급
이제 세션 및 메시지 (내용이 저장되어 있음) 개체가 있으므로 Address 개체 를 사용하여 문자를 처리해야 합니다.
주소 는 추상 클래스입니다. 따라서 하위 클래스 javax.mail.internet.InternetAddress 클래스가 주로 사용됩니다.
이메일 주소를 전달하여 주소 를 만들 수 있습니다.
Address address = new InternetAddress("[email protected]");
주소를 만드는 또 다른 방법은 이메일 주소와 함께 이름 alog를 전달하는 것입니다.
Address address = new InternetAddress("[email protected]", Manisha);
To, From, CC, BCC 필드를 아래와 같이 설정할 수도 있습니다.
message.setFrom(address)
message.addRecipient (유형, 주소)
사전 정의 된 세 가지 주소 유형은 다음 값 중 하나를 가진 객체입니다.
Message.RecipientType.TO
Message.RecipientType.CC
Message.RecipientType.BCC
인증 자 클래스
Authenticator 클래스는 네트워크 연결에 대한 인증을 얻는 방법을 알고있는 개체를 나타냅니다. 일반적으로 사용자에게 정보를 요청하여이를 수행합니다.
Authenticator 는 추상 클래스입니다. 사용자 이름과 암호를 생성자에 전달 하여 하위 클래스 PasswordAuthentication을 만듭니다 .
세션 개체를 생성 할 때 세션에 인증자를 등록해야합니다.
다음은 Authenticator 사용 의 예입니다 .
Properties props = new Properties();
//Override props with any customized data
PasswordAuthentication auth = new PasswordAuthentication("manisha", "pswrd")
Session session = Session.getDefaultInstance(props, auth);
운송 클래스
전송 클래스는 메시지 전송 메커니즘으로 사용됩니다. 이 클래스는 일반적으로 SMTP 프로토콜을 사용하여 메시지를 보냅니다.
추상 클래스입니다.
정적 send () 메서드를 호출하여 클래스의 기본 버전을 사용할 수 있습니다 .
Transport.send(message);
메시지를 보내는 다른 방법은 프로토콜의 세션에서 특정 인스턴스를 가져오고 사용자 이름과 암호 (불필요한 경우 공백)를 전달하고 메시지를 보내고 연결을 닫는 것입니다.
message.saveChanges(); // implicit with send() //Get transport for session Transport transport = session.getTransport("smtp"); //Connect transport.connect(host, username, password); //repeat if necessary transport.sendMessage(message, message.getAllRecipients()); //Done, close the connection transport.close();
스토어 클래스
메시지 저장 및 검색을 위해 메시지 저장소 및 해당 액세스 프로토콜을 모델링하는 추상 클래스입니다. 서브 클래스는 실제 구현을 제공합니다. Store는 저장소 이름 지정, 저장소 연결 및 연결 이벤트 수신을위한 여러 일반적인 방법을 제공 하는 Service 클래스를 확장 합니다.
클라이언트는 데이터베이스 액세스 프로토콜을 구현하는 저장소 개체를 가져 와서 메시지 저장소에 액세스합니다. 대부분의 메시지 저장소는 사용자가 액세스를 허용하기 전에 인증을 받아야합니다. 연결 방법은 해당 인증을 수행합니다.
Store store = session.getStore("pop3");
store.connect(host, username, password);
폴더 클래스
Folder 는 메일 메시지 용 폴더를 나타내는 추상 클래스입니다. 서브 클래스는 프로토콜 특정 폴더를 구현합니다. 폴더는 하위 폴더와 메시지를 포함 할 수 있으므로 계층 구조를 제공합니다.
Store에 연결 한 후 메시지를 읽기 전에 열어야하는 폴더를 가져올 수 있습니다.
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
Message message[] = folder.getMessages();
Folder 개체 의 getFolder (String name) 메서드는 명명 된 하위 폴더를 반환합니다. 메일 읽기가 완료되면 저장소 및 폴더 연결을 모두 닫습니다.
아래 이미지에서 저장소 및 폴더 관계를 볼 수 있습니다.
보시다시피 각 사용자 계정에 대해 서버에는 사용자의 메시지를 저장하는 저장소가 있습니다. 저장소는 폴더로 나뉘며 "받은 편지함"폴더는 주로 전자 메일 메시지를 포함하는 폴더입니다. 폴더에는 메시지와 하위 폴더가 모두 포함될 수 있습니다.