Whiteship's Note


JavaMail - HTML 메일 보내기

모하니?/Coding : 2008.08.07 09:25


이전 코드에서 getMessage부분에서 한 줄만 바꾸면 됨.

message.setText()로 보냈었는데, 이번에는 setContent("내용", "메일타입"); 형태로 보냄.
    private MimeMessage getMimeMessage(Session session, String title,
            String contents, String to) {
        MimeMessage message = new MimeMessage(session);
        try {
            message.setSubject(title);
            message.setContent("<h1>Hello world</h1>", "text/html");
            message.setRecipient(RecipientType.TO, new InternetAddress(to));
        } catch (MessagingException e) {
            e.printStackTrace();
        }
        return message;
    }

아직도 수정하지 않고 있는 예외 잡아먹는 코드.. 저 한 줄 고치는게 왜이리 귀찮을까; 말나온김에 고치기..

사용자 삽입 이미지
끝.


다음은 HTML에 이미지 동봉하기..


top


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

모하니?/Coding : 2008.08.07 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