반응형
java로 메일을 보내야 할 경우 자체적으로 smtp 서버가 없다면 외부 smtp 서버를 이용하여 메일을 보내야 한다.
오늘은 Gmail의 smtp 서버를 이용하여 메일 보내기를 해보자.
Gmail의 smtp를 사용하려면 구글 계정이 필요하다. 구글 계정은 아래 링크에서 가입후 사용할 수 있다.
https://www.gmail.com/intl/ko/mail/help/about.html
기존에 구글 계정이 있더라도, 계정을 여러개 만들 수 있으니 메일 발신 전용으로 계정을 생성하는것이 좋을 수 있다.
해당 프로그램을 작성하려면 java-mail 라이브러리가 필요하다. 라이브러리를 다운받자.
import java.util.Date; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; public class SendMailTest { public static void main(String[] args) { Properties p = System.getProperties(); p.put("mail.smtp.starttls.enable", "true"); // gmail은 무조건 true 고정 p.put("mail.smtp.host", "smtp.gmail.com"); // smtp 서버 주소 p.put("mail.smtp.auth","true"); // gmail은 무조건 true 고정 p.put("mail.smtp.port", "587"); // gmail 포트 Authenticator auth = new MyAuthentication(); //session 생성 및 MimeMessage생성 Session session = Session.getDefaultInstance(p, auth); MimeMessage msg = new MimeMessage(session); try{ //편지보낸시간 msg.setSentDate(new Date()); InternetAddress from = new InternetAddress() ; from = new InternetAddress("test<test@gmail.com>"); // 이메일 발신자 msg.setFrom(from); // 이메일 수신자 InternetAddress to = new InternetAddress("test@naver.com"); msg.setRecipient(Message.RecipientType.TO, to); // 이메일 제목 msg.setSubject("메일 전송 테스트", "UTF-8"); // 이메일 내용 msg.setText("내용", "UTF-8"); // 이메일 헤더 msg.setHeader("content-Type", "text/html"); //메일보내기 javax.mail.Transport.send(msg); }catch (AddressException addr_e) { addr_e.printStackTrace(); }catch (MessagingException msg_e) { msg_e.printStackTrace(); } } } class MyAuthentication extends Authenticator { PasswordAuthentication pa; public MyAuthentication(){ String id = "test@gmail"; // 구글 ID String pw = "test123"; // 구글 비밀번호 // ID와 비밀번호를 입력한다. pa = new PasswordAuthentication(id, pw); } // 시스템에서 사용하는 인증정보 public PasswordAuthentication getPasswordAuthentication() { return pa; } }
이메일 헤더를 "text/html"로 하면 본문 내용으로 HTML 을 작성하여 전송할 수 있다.
'Language > Java / JSP' 카테고리의 다른 글
[Java] URL 읽어오기 (0) | 2014.08.01 |
---|---|
[Java] 엑셀 파일 만들기 (0) | 2014.08.01 |
[Java] SHA256, MD5 암호화 하기 (1) | 2014.07.28 |
[Java] 디렉토리내 일정기간 지난 파일 삭제 (0) | 2014.07.28 |
[Java] 디렉토리내 특정 파일 리스트 출력 (0) | 2014.07.28 |