Whiteship's Note

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

모하니?/Coding : 2008. 8. 7. 09:16


로컬에 설치한 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 메시지 보내기
top

Write a comment.




: 1 : ··· : 918 : 919 : 920 : 921 : 922 : 923 : 924 : 925 : 926 : ··· : 2638 :