'메일'에 해당되는 글 1건

  1. [2008/01/04] 메일전송시 인증이 필요할 경우(JavaMail 사용시)

메일전송시 인증이 필요할 경우(JavaMail 사용시)

[작렬허접코딩/자바]
안녕하세요.

얼마전 인증을 해야하는 SMTP에 연결해야 했는데 그 방법 때문에 매우 고민했었습니다.
Mail API에서 Authenticator는 제공을 하면서 ID와 PW를 설정하는 부분이 없어서
참 난감했었습니다. 영어 실력이 짧아서 관련 Document를 읽어보다가 못찾고
다만 API에 있는 Session 클래스의 
getInstance(Properties prop, Authenticator auth) 메소드가 마음에 걸려
혹시나 하는 마음으로 만들어 봤었는데 잘 되더군요.
sendmail 과 qmail 및 윈도기반 smtp server 몇 곳을 테스트 해봤는데 잘 되었습니다.

클래스 전체 소스는 다음과 같습니다.

/*
 * MyAuthenticator.java
 * 2002.05.27.
 * Hyunho Kim(falllove@ducc.or.kr)
 *
 * Copyrightⓒ 2002 FancyArts Corps. All rights reserved.
 */

/**
 * SMTP Authenticator
 */
public final class MyAuthenticator extends javax.mail.Authenticator {

    private String id;
    private String pw;

    public MyAuthenticator(String id, String pw) {
        this.id = id;
        this.pw = pw;
    }

    protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
        return new javax.mail.PasswordAuthentication(id, pw);
    }

}

사용하실 때는 session을 얻기 전에 프로퍼티에 mail.smtp.auth 항목을 추가하시고
MyAuthenticator의 인스턴스를 하나 만드셔서 인자로 넘기시면 됩니다.

Properties prop = new Properties();
prop.put("mail.smtp.host", "smtp_host_name");
prop.put("mail.smtp.auth", "true");

MyAuthenticator auth = new MyAuthenticator("smpt_id", "smtp_pw");

// 새로운 메일 세션
Session mailSession = Session.getInstance(props, auth);
// or Session mailSession = Session.getDefaultInstance(props, auth);

정말 간단하죠^^;; 정말 암 것도 없는데 전에 이것을 하기 위해서 그 많은 글을 뒤적일
때는 못찾겠더라구요. 전 만들긴 했었지만 실제 서비스는 sendmail에서
localhost relay를 허용해서 사용하고 인증없이 발송하고 있습니다.

즐프하세요 :)

JDF에 비슷한 내용이 없었던 것 같던데 인증을 요구하는 smtp사용을 위해서
필요하시면 추가해주세요.

==================================================
수정: 2002-09-14
MyAuthenticator 의 import부분 삭제되었습니다.
작업중인 다른 class의 소스를 복사해다가 고치다보니
앞에 사용하지 않는 import문장이 있었습니다.
==================================================



==================================================
Hyunho Kim
ICQ: 7443923
MSN: h2kfl__at__hotmail.com
email: falllove__at__intizen.com
homepage: in working
==================================================
이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/01/04 11:48 2008/01/04 11:48