JavaMail - 간단한 Text 메시지 보내기

로컬에 설치한 SMTP로 보내려고 했더니, 외부로 나가질 않는데, 외부로 내보내는 설정을 못찾아서 그냥 Gmail SMTP 사용해서 보내봅니다.

    public void sendMail(String id, String passwd, String title, String contents, String to) {
        Properties props = makeSMTPProperties();
        Authenticator auth = getAutheticator(id, passwd);
        Session session = Session.getDefaultInstance(props, auth);
        URLName urln = new URLName(“smtp”, “smtp.gmail.com”, 587, “”, id, passwd);
        
        SMTPSSLTransport trans = new SMTPSSLTransport(session, urln);
        trans.setStartTLS(true);

        try {
            MimeMessage message = getMimeMessage(session, title, contents, to);
            trans.send(message);
        } catch (MessagingException e) {
            e.printStackTrace();
        } finally {
            try {
                trans.close();
            } catch (MessagingException e) {
                e.printStackTrace();
            }
        }
    }

    private Properties makeSMTPProperties() {
        Properties props = new Properties();
        props.put(“mail.transport.protocol”, “smtp”);
      props.put(“mail.smtp.starttls.enable”,”true”);
      props.put(“mail.smtp.host”, “smtp.gmail.com”);
      props.put(“mail.smtp.auth”, “true”);
        return props;
    }

    private Authenticator getAutheticator(String id, String passwd) {
        Authenticator auth = new SMTPAuthenticator(id, passwd);
        Security.addProvider(new Provider());
        return auth;
    }

    private class SMTPAuthenticator extends Authenticator {
        private String id;
        private String passwd;
        public SMTPAuthenticator(String id, String passwd) {
            this.id = id;
            this.passwd = passwd;
        }
        public PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(id, passwd);
        }
    }

    private MimeMessage getMimeMessage(Session session, String title,
            String contents, String to) {
        MimeMessage message = new MimeMessage(session);
        try {
            message.setSubject(title);
            message.setText(contents);
            message.setRecipient(RecipientType.TO, new InternetAddress(to));
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        return message;
    }

역시 대충 코딩한거라… 잡아먹는 예외처리 ㅠ.ㅠ 아무래도 이클립스 기본 템플릿 코드를 바꿔야 할듯.
throw new RuntimeException(e);
요렇게..

다음은 HTML 메시지 보내기