Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

kyh코딩 공부 블로그

javaMaill 이용한 메일 보내기 본문

코딩연습

javaMaill 이용한 메일 보내기

킴용현 2023. 3. 24. 10:42

관리자가 휴가를 승인을하면 자동으로 메일을 보내주는 형태를 만들어볼 것이다.

먼저 javaMail을 설치하고 나는 gmail을 이용하였다.

gmail smtp설정은 인터넷에 잘 나온다. passwoard는 앱비밀번호로 지정하였다.

bean설정을 해준다.

 <bean id="EMSMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"
            p:host="smtp.gmail.com"
            p:port="587"
            p:username="구글아이디"
            p:password="구글 비밀번호" //나같은 경우는 앱 비밀번호이다. (설정하는 방법이 있다. 인터넷 검색)
            p:defaultEncoding="utf-8">
            <property name="javaMailProperties">
                <props>
                    <prop key="mail.transport.protocol">smtp</prop>
                    <prop key="mail.smtp.auth">true</prop>
                    <prop key="mail.smtp.starttls.enable">true</prop>
                    <prop key="mail.smtp.debug">true</prop>
                    <prop key="mail.smtp.ssl.trust">smtp.gmail.com</prop>
                    <prop key="mail.smtp.ssl.protocols">TLSv1.2</prop>
                </props>
            </property>
        </bean>

맨 밑에 protocols를 설정한 이유는 protocols 오류가 계속 떠서 지정해준 것이다.

 

bean 설정이 끝났으면 cotroller단을 만질 차례이다. 나같은 경우는 승인을 하면 바로 메일이 전송되기 때문에 굳이

service 단에서 작업을 하지 않고 그냥 controller단에서 다 처리하였다.

안에 내용은 딱 메일 보내는 부분만 올린 것이다.

//빈 설정한 걸 불러온다.
@Resource(name = "EMSMailSender")
private JavaMailSenderImpl javaMailSender;

//먼저 html로 메일을 구성하기 때문에 MineMessage 함수를 사용할 것이다.
//그냥 텍스트만 보내고 싶으면 SimpleMessage를 사용하면 된다. 구글에 검색하면 다 나옴
MimeMessage message = javaMailSender.createMimeMessage();

//생성이 끝났으면 변수를 지정해준다. 나는 vo에서 다 받아 오기 때문에 변수는 html을 생성할 변수만 사용했다.
String htmlStr = "";

 htmlStr += "<h3> 안녕하세요 "+ vacationVO.getMember_name()+"님 휴가신청 때문에 메일 보내드립니다."+ "</h3></br>";
            htmlStr += "<div style=\"width:500px\"><span>"+vacationVO.getRmrk_cn()+"</spna></div></br>";

            if (vacationVO.getProgress().equals("Y")){
                htmlStr += "<hr><p>신청하신 휴가신청건은 "+"<strong style=\"color:blue\">승인</strong>"+"되었습니다.</p>";
            }
            else {
                htmlStr += "<hr><p>신청하신 휴가신청건은 "+"<strong style=\"color:red\">거절</strong>"+"되었습니다.</p>";
                htmlStr += "<p style=\"color:red\">거절사유:</p>"+"<span>"+vacationVO.getReason_refusal()+"입니다."+"</span>";
            }
            htmlStr += "<h3>-감사합니다 좋은 하루 보내세요-</h3>";

			//받을 사람의 이메일
            message.setRecipients(MimeMessage.RecipientType.TO,vacationVO.getEmail());
            //여기에 위에 만든 html을 넣고 타입을 지정한다 utf-8을 안 넣으면 한글 다 깨져서 나온다.
            message.setContent(htmlStr, "text/html;charset=utf-8");
            //제목을 입력
            message.setSubject("휴가신청 관련 메일입니다");
            //누가 보내는지를 입력
            message.setFrom("보낼사람의 이메일");
            //메일을 보내는 함수
            javaMailSender.send(message);
   
   //이렇게 하면 메일을 발송할 수 있다.

 

빈 설정만 제대로 하면 오류나는거는 딱히 없다.

 

메일을 보내면 이런 형식으로 받아 볼 수가 있다.