사용자 삽입 이미지사용자 삽입 이미지
원래는 Spring 22장 Email을 보고 코딩하고 있었는데 잘 안되더군요. 그래서 Gmail 설정에 가서 도움말을 봤더니 SSL 인증을 사용하는데 그와 관련된 Spring 코드를 아직 찾아보지 않았습니다. MailSender 에서 SSL 설정하는 메소드가 있어야 할 것 같은데 일단 JavaMail API로 어떻게 돌아가는지 확인해 봤습니다.

JavaMail API 에서 SMTPSSLTransport 클래스가 MailSender의 하위 클래스인 JavaMailSenderImpl에 대응하는 클래스인데 특징은 이름에서 알 수 있듯이 SSL을 지원하는 클래스인 듯 하네요.

    public void greetingEmail2(MemberInfo memberInfo){
        URLName urln = new URLName("smtp", "smtp.gmail.com", 587, "", "", "");

        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");

        Authenticator auth = new SMTPAuthenticator();
        Security.addProvider(new Provider());
        Session session = Session.getDefaultInstance(props, auth);
        SMTPSSLTransport trans = new SMTPSSLTransport(session, urln);

        trans.setStartTLS(true);
        Message message = new MimeMessage(session);
        try {
            message.setSubject("hi i'm keesun");
            message.setText("hehehehe");

            InternetAddress[] addressTo = new InternetAddress[1];
            addressTo[0] = new InternetAddress(memberInfo.getEmail());

            message.setRecipients(Message.RecipientType.TO, addressTo);

            trans.send(message);
            trans.close();
        }
        catch (MessagingException e) {
            e.printStackTrace();
        }
    }

    private class SMTPAuthenticator extends javax.mail.Authenticator {

        public PasswordAuthentication getPasswordAuthentication() {
            String username = "Gmail 계정";
            String password = "Gmail 비번";
            return new PasswordAuthentication(username, password);
        }
    }

코드를 조금만 바꾸면 모든 회원에게 공지메일을 보낼 수도 있습니다.ㅋㅋ;;
코드를 조금 더 바꾸면 간단하게 사용할 수 있게 Util 클래스로 만들 수 있을 것 같습니다.

근데 Naver는 우수회원(네이버 메일 자주 쓰는 사람)만 smtp 사용할 수 있고 DAUM은 아예 smtp 를 지원하는지 안하는지도 모르겠고.. 너무들해열!!! 이메일이 아니라 FTP가 되가고 있는 국내 이메일 서비스의 경향인가;;