'mail.jar'에 해당되는 글 2

  1. 2010.07.14 Mapping of MIME Types
  2. 2010.06.08 Java Mail API

Mapping of MIME Types

MimeBodyPart.getContent() 의 리턴되는 객체가 String이였는데 JEUS 6에서는 에러가 발생한다.
java.lang.ClassCastException: javax.xml.transform.stream.StreamSource incompatible with java.lang.String

소스가 (String)MimeBodyPart.getContent() 이렇게 되어 있다.
확인 결과 JEUS의 라이브러리인 javaee.jar에서 발생하였고 기술지원을 받음.
getContent()는 MIME 타입에 따라 다른 객체를 리턴한다고 한다.

Tmax의 답변
기존 J2EE 1.4에서는 엄격하게 적용하지 않았지만, JavaEE 5 부터 JAX-WS 가 도입되면서 부터는
매핑을 엄격하게 적용하여 구현하고 있습니다.

 MIME Type  Java Type
 image/gif  java.awt.Image
 image/jpeg
 java.awt.Image
 text/plain
 java.lang.String
 multipart/*
 javax.mail.internet.MimeMultipart
 text/xml or application/xml
 javax.xml.transform.Source

MIME 타입이 xml 이므로 거기에 해당하는 객체가 리턴되고 적절한 처리를 하면 된다.

 
- 테스트케이스
- MIME 타입에 따른 처리가 되는지 확인하기 위해 javax.activation.debug 시스템 프로퍼티를 true로 하면 자세한 로그 내용을 볼 수 있다.



Java Mail API

- README 파일 내용
mail.jar        The JavaMail API and all service providers, most users need *only* this jar file
lib/mailapi.jar    The JavaMail API with no service providers
lib/imap.jar    The IMAP service provider
lib/smtp.jar    The SMTP service provider
lib/pop3.jar    The POP3 service provider
lib/dsn.jar        multipart/report DSN message support

demo/README.txt    Instructions for running the demo programs
demo/CRLFOutputStream.java    demo OutputStream filter to convert all line terminators
to CRLF
demo/NewlineOutputStream.java    demo OutputStream filter to convert all line terminators to platform's line terminator
demo/copier.java    demo program to copy mail between folders
demo/folderlist.java demo program to list subfolders
demo/monitor.java    demo program to monitor for new mail
demo/mover.java    demo program to move mail between folders
demo/msgmultisendsample.java
demo program to send a sample multipart message
demo/msgsend.java    demo program to send a single part text message to a specified recipient (ala /bin/mail)
demo/msgsendsample.java    demo program to send a sample single part text message
demo/msgshow.java    demo program to read messages from an IMAP store
demo/namespace.java    demo program that illustrates use of namespace APIs
demo/populate.java    demo program that copies entire folder hierarchies
demo/registry.java    demo program that illustrates the registry
demo/search.java    demo program to search folders
demo/sendfile.java    demo program to send a file as an attachment
demo/sendhtml.java  demo program to send html mail
demo/smtpsend.java    demo program to illustrate handling SMTP error codes
demo/transport.java    demo program to illustrate use of Transport
demo/uidmsgshow.java    demo program to read messages from an IMAP store
demo/client/    source files for cool demo program that implements a simple mail reader. (Uses Swing)
demo/client/README.txt    README file for running the simple mail-reader demo
demo/servlet/    source for a simple servlet that allows using a web browser to read and send mail
demo/servlet/README.txt    README file that describes the JavaMailServlet

볼만한 예제가 많다.
웹메일 시스템을 만들어도 되겠다.

- 이 그림을 보면 구조가 잡힌다.
MIME 타입에 따라 처리를 해야 한다.

- JDK 1.6에는 JAF가 포함되어 있다.[각주:1]
        JavaMail(TM) API 1.4.3 release
        ------------------------------

Welcome to the JavaMail API 1.4.3 release!  This release includes
versions of the JavaMail API implementation, IMAP, SMTP, and POP3
service providers, some examples, and documentation for the JavaMail
API.

Please see the FAQ at http://java.sun.com/products/javamail/FAQ.html

JDK Version notes
-----------------

The JavaMail API supports JDK 1.4 or higher.  Note that we have
currently tested this implementation with JDK 1.4, 1.5, and 1.6.

While JavaMail will work with JAF 1.0.2, we recommend the use of JAF 1.1
or newer.  JAF 1.1.1 is currently the newest version.  Note that JAF 1.1
is included in JDK 1.6 and JAF 1.1.1 is included in JDK 1.6.0_10 and
later.

* 오늘의 교훈 : README 파일이나 메뉴얼을 잘 읽자.
  1. 2010-06-08 오늘 알았음. [본문으로]