JAVA 메일 발송 시 javax.mail.jar, activation.jar 이상 두 개의 라이브러리가 필요하며,
jdk 1.6부터 그 이상의 버전은 activation.jar 가 JRE에 포함되어 있어 필요하지 않습니다.
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
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;
import javax.mail.internet.MimeUtility;
public class sendMail {
public static void main(String args[]) throws MessagingException, UnsupportedEncodingException{
// 메일 관련 정보
String host = "smtp.naver.com";
final String username = "송신자ID";
final String password = "비번";
int port=465;
// 메일 내용
String recipient = "mailAddr@naver.com"; // 수신자 기재
String subject = "파일첨부 메일발송 테스트"; // 제목
String body = "메일 내용 메일 내용 메일 내용 메일 내용"; // 메일 내용, 개행은 \n 으로
Properties props = System.getProperties();
props.put("mail.smtp.host", host);
props.put("mail.smtp.port", port);
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.ssl.enable", "true");
props.put("mail.smtp.ssl.trust", host);
Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() {
String un=username;
String pw=password;
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(un, pw);
}
});
session.setDebug(true); //for debug
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress("mailAddr@naver.com"));
msg.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient));
msg.setSubject(subject);
msg.setSentDate(new Date());
// 메일내용, 파일첨부를 위한 Multipart
Multipart multipart = new MimeMultipart();
// 메일내용 BodyPart를 생성
BodyPart bodyPart = new MimeBodyPart();
bodyPart.setText(body);
// Multipart에 메일내용 BodyPart를 붙인다.
multipart.addBodyPart(bodyPart);
// 파일첨부용 BodyPart 생성
BodyPart fileBody = new MimeBodyPart();
String filename = "test.txt";
DataSource source = new FileDataSource("/test.txt");
fileBody.setDataHandler(new DataHandler(source));
fileBody.setFileName(MimeUtility.encodeText(filename));
// Multipart에 파일첨부용 BodyPart를 붙인다.
multipart.addBodyPart(fileBody);
// 두 번째 파일첨부용 BodyPart 생성
BodyPart fileBody1 = new MimeBodyPart();
String filename1 = "테스트.txt";
DataSource source1 = new FileDataSource("/테스트.txt");
fileBody1.setDataHandler(new DataHandler(source1));
// 파일명이 한글일 때 파일명이 깨지는 현상이 있으므로 MimeUtility.encodeText() 로 파일명 String을 감싸준다.
fileBody1.setFileName(MimeUtility.encodeText(filename1));
// Multipart에 두 번째 파일첨부용 BodyPart를 붙인다
multipart.addBodyPart(fileBody1);
// 이메일 메시지의 내용에 Multipart를 붙인다.
msg.setContent(multipart);
Transport.send(msg);
}
}
'Programming > Java / Jsp' 카테고리의 다른 글
java/jsp 기타 (0) | 2017.04.17 |
---|---|
java파일읽기 (0) | 2017.04.13 |