Java gmail library

agnusdei·2023년 7월 5일
0
/* 메일 전송 */
public static void sendMail(String mail, String htmlContent, String ttl) throws Exception {

    String host = ""; 
    String useraddr = ""; 
    String userpwd = "";   
    /* IMAP/SMTP 설정 */ 
    Properties props = new Properties(); 

    /* 호스트, 계정 비번 설정 */
    host = "smtp.gmail.com";	  
    useraddr = "아이디@gmail.com";
    userpwd = "...";        

    /* Gmail 앱 비밀번호 : ... */
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.socketFactory.port", "465");       
    props.put("mail.smtp.ssl.enable", "true");
    props.put("mail.smtp.host", host);
    props.put("mail.smtp.auth", "true"); 
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.ssl.protocols", "TLSv1.2");


    final String username = useraddr; // 계정
    final String password = userpwd; // 비밀번호
    // mailForm에 따른 메일 설정

    /* Session 생성 */
    Session session = Session.getInstance(props, new javax.mail.Authenticator() {
        String userId = username;  
        String userPw = password;

        protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
            return new javax.mail.PasswordAuthentication(userId, userPw);
        } 
    });   

    /* Message 설정 */ 
    MimeMessage message = new MimeMessage(session);   
    message.setFrom(new InternetAddress(useraddr, MimeUtility.encodeText("안녕", "UTF-8", "B"))); 
    message.setSender(new InternetAddress(useraddr)); // 발송인
    message.setSubject(ttl); // 제목 
    session.setDebug(true); // 디버깅 여부

    /* 내용 설정 */     
    String htmlContents = StringUtil.unEscape(htmlContent); 

    /* 한 명씩 전달하는  경우 */    
    message.setRecipient(Message.RecipientType.TO, new InternetAddress(mail));

    Multipart mp = new MimeMultipart();
    MimeBodyPart mbp1 = new MimeBodyPart();
    mbp1.setContent(htmlContents, "text/html;charset=UTF-8"); // 내용
    mp.addBodyPart(mbp1);  

    MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
    mc.addMailcap("text/html; x-java-content-handler=com.sun.mail.handlers.text_html");
    mc.addMailcap("text/xml; x-java-content-handler=com.sun.mail.handlers.text_xml");
    mc.addMailcap("text/plain; x-java-content-handler=com.sun.mail.handlers.text_plain");
    mc.addMailcap("multipart/*; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
    mc.addMailcap("message/rfc822; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
    CommandMap.setDefaultCommandMap(mc);

    message.setContent(mp);
    Transport.send(message); 
}


1. 2단계 보안 인증을 완료하면 아래에 "앱 비밀번호" 란이 추가된 걸 볼 수 있다.

2. 클릭 후 앱 고유 비밀번호를 입력 받아 로그인 비밀번호로 활용하면 해당 앱만 사용할 수 있다.

  1. 따라서 여기서 받은 비밀번호를 유저 비밀번호로 로직에 입력해주면 정상작동 한다.

0개의 댓글