Site Search :
Standard Enterprise XML Methodology Pattern Setting Tunning Other
Article Contributors
GuestBook
Javapattern Maven
XSourceGen Dev
JetSpeed Test
JLook Image
jLook Family Site


Java WebMail System Implementation(2)
 
아시는 분은 알겠지만 2001년에 모모 사이트에 돈(무려 900원)받고 올라간 내용인데 요청에 의하여 자바패턴사이트에 다시 공개합니다. ( 2003/04/25 ) 718
Written by ienvyou - 최지웅
4 of 4
 


Transport Class

* Transport

자.  지난시간까지 메일보내기에 집중하여 했는데, 오늘 뒷부분부터는 메일을 받아오는 

부분에 대하여 설명을 하게 될 것이다.

우선 저번 시간에 다 살펴보지 못했던 메일보내기의 Transport클래스에 대하여 살펴보도록 하자.


자바메일보내기로 메일을 전송할때 가장 마지막으로 사용되는 클래스가 바로 Transport클래스이다. 

이 클래스는 메시지를 보내기 위해 특정프로토콜과 대화하도록 한다.

(일반적으로 SMTP) 이클래스는 추상클래스이며, Session클래스와 비슷한 일을 한다. 

Default는 static메소드는 send()를 이용하여 메시지를 보내게 되는데 아래와 같다

Transport.send(message);

위의 방법말고도 프로토콜을 위해 username, password에 관한 정보를 세션으로부터 

인스턴스를 얻어와 메시지를 보내고 connection을 close()시킬수도 있는데 사용법은 아래와 같다.

message.saveChanges(); // implicit with send()
Transport transport = session.getTransport("smtp");
transport.connect(host, username, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();

현재 multiple메시지를 보낼때는 위의 방법이 가장 이상적이다.

왜냐하면 send() static메소드의 경우 각각의 메시지를 보낼때 서버측에 매번 connection을 맺게끔 

만들지만 위의 경우처럼 프로그램을 짜게 되면 하나의 Connection을 연결시켜 놓고, 

메일의 메시지를 모두 보낼때까지 연결을 지속시키게 되는 장점을 가지고 있다.

tip> 메일전송시 도스창에 상태를 보기 위한다면 디버그용인 session.setDebug(true)를 쓰기 바란다.

아래는 위의 예제코드를 삽입시켜 만든 메일보내기 예제이다.



import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;

public class MailExample {
  public static void main (String args[]) throws Exception {
    String host = "openitech.co.kr";
    String from = "ienvyou@openitech.co.kr";
    String to = "ienvyou@orgio.net";

    // Get system properties
    Properties props = System.getProperties();

    // Setup mail server
    props.put("mail.smtp.host", host);
    props.put("mail.smtp.auth", "true");

    // Get session
    Session session = Session.getDefaultInstance(props, null);
	session.setDebug(true);

    // Define message
    MimeMessage message = new MimeMessage(session);

    // Set the from address
    message.setFrom(new InternetAddress(from));

    // Set the to address
    message.addRecipient(Message.RecipientType.TO, 
      new InternetAddress(to));

    // Set the subject
    message.setSubject("Hello JavaMail");

    // Set the content
    message.setText("Welcome to 자바메일");

    // Send message
	
    message.saveChanges(); // implicit with send()
    Transport transport = session.getTransport("smtp");
    transport.connect(host, "ienvyou", "0000");
    transport.sendMessage(message, message.getAllRecipients());
    transport.close();
	
  }
}

빨간 글씨로 코딩된 부분이 실질적인 Transport클래스의 서버인증부분이며 property값에 auth플래그가 true값으로 설정되어 있어야 하는것은 예전부터 누누히 강조했던 부분이다.
 
1 2 3 4
References
 
Copyright ⓒ 2003 www.javapattern.info & www.jlook.com, an jLOOK co.,LTD