java

java에서 메일 보내기 예제

알 수 없는 사용자 2008. 12. 5. 15:47
import java.util.Date;

import java.util.Properties;

import java.util.StringTokenizer;


import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.Message;

import javax.mail.Multipart;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;







public class ZZZ {


String host = "smtp.gimslab.com";

String fromAddr = "from_addr@gimslab.com";

String fromName = "프롬";

String toAddr = "to_addr@gimslab.com";

String toName = "투투";

String subject = "java 에서 보냅니다. java mail";

String content = "안녕하세요 java mail";

String filePathList = "D:/data/도우.gif;D:/xxx/mail.hwp";

String fileNameList = "도우.gif;구글해킹.hwp";


Properties props = new Properties();

Session session = Session.getDefaultInstance(props, null);

props.put("mail.smtp.host", host);

props.put("mail.smtp.auth", "true"); // 인증이 필요한 경우


// 첨부파일 확인

StringTokenizer stFileName = new StringTokenizer(filePathList, ";");

StringTokenizer stFileView = new StringTokenizer(fileNameList, ";");

int nNameCnt = stFileName.countTokens();

int nViewCnt = stFileView.countTokens();

if(nNameCnt != nViewCnt){

log("첨부파일 경로정보와 이름정보가 서로 다릅니다.");

log("실제파일명 토큰 수/첨부파일명 토큰 수 = " + nNameCnt + "/" + nViewCnt);

throw new Exception();

}


MimeMessage message = new MimeMessage(session);

message.setFrom(new InternetAddress(fromAddr, fromName, "EUC-KR"));

message.setRecipient(Message.RecipientType.TO, new InternetAddress(toAddr, toName, "EUC-KR"));

message.setSubject(subject, "euc-kr");

message.setSentDate(new Date());


MimeMultipart mp = new MimeMultipart();

MimeBodyPart mbp1 = new MimeBodyPart();

mbp1.setContent(content, "text/html;charset=euc-kr");

mp.addBodyPart(mbp1);


// 파일 첨부

while(stFileName.hasMoreElements()){

MimeBodyPart mbp2 = new MimeBodyPart();

FileDataSource fds = new FileDataSource(stFileName.nextToken());

mbp2.setDataHandler(new DataHandler(fds));

mbp2.setFileName(new String(stFileView.nextToken().getBytes("KSC5601"), "8859_1"));

mp.addBodyPart(mbp2);

}


message.setContent(mp);


// 인증이 필요한 경우

Transport transport = session.getTransport("smtp");

transport.connect(host, "USER_ID", "PASSWORD");

transport.sendMessage(message, message.getAllRecipients());

transport.close();


// 인증이 필요없는 경우 단순히 아래 한줄만으로 가능

//Transport.send(message);

}