0. 들어가기 전에
어떤 작업을 시행 한 후, 결과나 로그를 메일로 보내야 할 경우가 있습니다. 요즘에는 가입 확인 메일을 보낼 때나 인증을 처리할 떄도 자주 사용합니다. 이런 경우 SMTP를 통해서 메일을 보낼 수 있습니다. 여기에서는 Gmail을 이용하여 짧게 기능을 구현해 보겠습니다.
maven dependency
|
jar 파일도 첨부합니다.
1. 전송 부분 구현
public class MailUtil {
public static void sendMail(Session session, String toMail, String subject, String content){ try { MimeMessage msg = new MimeMessage(session); msg.addHeader("Content-type", "text/HTML charset=UTF-8"); msg.addHeader("format", "flowed"); msg.addHeader("Content-Transfer-Encoding", "8bit"); msg.setFrom(new InternetAddress("no_reply@gmail.com", "NoReply")); //보내는 사람 이름 msg.setSubject(subject, "UTF-8"); msg.setText(content, "UTF-8"); msg.setSentDate(new Date()); msg.setRecipient(Message.RecipientType.TO, new InternetAddress(toMail)); System.out.println("send email"); Transport.send(msg); System.out.println("suceess"); } catch (Exception e) { System.out.println("error"); e.printStackTrace(); } } } |
MailUtil이라는 클래스를 생성하여 sendMail 이라는 static 메소드를 만들었습니다.
session, 받는 사람 메일 주소, 메일 제목, 메일 내용을 파라미터로 받게 해놓았습니다.
2. 실행부 구현
public class Main {
public static void main(String[] args) {
final String toMailID = "받을 사람의 메일 주소"; final String fromMailID = "보내는 사람 계정의 메일 주소(GMail 계정으로)"; final String password = "보내는 사람 계정의 비밀 번호";
Properties props = System.getProperties(); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.port", "587"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls", "true");
Authenticator auth = new Authenticator() { protected PasswordAuthentication getPasswordAuthentication(){ return new PasswordAuthentication(fromMailID, password); } };
Session session = Session.getInstance(props, auth); MailUtil.sendMail(session, toMailID, "testMail", "test contents"); }
} |
GMail을 이용하므로, 보낼 사람의 계정 아이디와 비밀번호를 입력해주어야 합니다.
GMail 말고 다른 회사의 SMTP를 사용하시려면, 그 회사가 지원해주는 host와 port를 조사하셔서 mail.smtp.host와 mail.smtp.port에 적어주시면 됩니다.
그외의 방법으로 컴퓨터 자체에 메일 서버를 설치하시면, 인증 절차를 거치지 않고 보낼 수 있습니다.