현재 지메일은 POP3, IMAP, SMTP를 지원한다. 때문에 POP3를 이용하여 각 메일 클라이언트를 사용하여 지메일의 메일을 읽어올 수도 있고, SMTP를 사용하여 메일을 보낼 수 있기도 하다. POP3, SMPT등을 기본으로 제공하지 않는 국내 포털들의 메일 계정으로는 많은 일을 하지 못하지만 지메일을 이용해서는 다양한 일을 해 볼 수 있다.
그러면 여기에서는 지메일 SMTP를 이용한 자바 메일 API를 사용하여 메일을 발송해 보자. 여기서 사용되는 소스는 "보안 계정으로 설정된(아이디/패스워드가 있는) SMTP 서버를 이용한 자바메일발송" 글과 동일하게 사용된다. 단지 G-Mail SMTP 설정하는 부분이 다를 뿐이다.
자 이제 G-Mail SMTP를 사용한 자바메일 발송 예제를 살펴보자. 간단한 애플리케이션 형태이다.
/**
*
*/
package net.wiseant.mail;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeUtility;
/**
* @author Sang Hyup Lee
* @version 1.0
*
*/
public class GMailSender {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String host = "smtp.gmail.com";//smtp 서버
String subject = "G-Mail을 이용한 메일발송";
String from = "gmail-id@gmail.com"; //보내는 메일
String fromName = "이름";
String to = "receiver-id@daum.net";
String content = "G-Mail을 이용한 메일 발송 예제입니다. 감사합니다.";
try{
// 프로퍼티 값 인스턴스 생성과 기본세션(SMTP 서버 호스트 지정)
Properties props = new Properties();
// G-Mail SMTP 사용시
props.put("mail.smtp.starttls.enable","true");
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.host", host);
props.setProperty("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.port", "465");
// props.put("mail.smtp.user", from);
props.put("mail.smtp.auth", "true");
MyAuthenticator auth = new MyAuthenticator("gmail-id@gmail.com", "gmail-password");
Session mailSession = Session.getDefaultInstance(props, auth);
Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(from, MimeUtility.encodeText(fromName,"UTF-8","B")));//보내는 사람 설정
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);//받는 사람설정
msg.setSubject(subject);// 제목 설정
msg.setSentDate(new java.util.Date());// 보내는 날짜 설정
msg.setContent(content,"text/html;charset=euc-kr"); // 내용 설정 (HTML 형식)
Transport.send(msg); // 메일 보내기
System.out.println("메일 발송을 완료하였습니다.");
} catch ( MessagingException ex ) {
System.out.println("mail send error : " + ex.getMessage());
} catch ( Exception e ) {
System.out.println("error : " + e.getMessage());
}
}
}
Properties 클래스의 put 메소드에 들어가는 properties 설정을 G-Mail SMTP에 맞추어주면 된다. 그리고 이전 글에서 살펴본 것처럼 보안계정이 설정된 SMTP 서버를 사용할 경우에는 해당 아이디와 패스워드를 셋팅해 주어야 한다. 따라서 MyAuthenticator 클래스에 아이디와 패스워드를 생성자 properties로 인스턴스를 만들어 사용해 주어야 한다.
MyAuthenticator 클래스도 소스를 살펴보자.
package net.wiseant.mail;
import javax.mail.Authenticator;
/**
* @author Administrator
*
*/
public class MyAuthenticator extends 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);
}
}
댓글 2개:
감사 많은 도움 됬습니다.
@hoon - 2009/05/08 15:39
도움이 되셨다니 기분 좋네요^^ 좋은 하루 되세요~
댓글 쓰기