본문 바로가기
Java/Spring

[Spring] 구글 메일 전송

by usang0810 2020. 3. 5.

pom.xml에 2개의 라이브러리를 마이그레이션

※ 제 spring 버전이 5.2.3이라 spring-context-support도 혹시 몰라 5.2.3으로 했습니다.

<!-- java mail 전송 API -->
<!-- https://mvnrepository.com/artifact/com.sun.mail/javax.mail -->
<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.2</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>5.2.3.RELEASE</version>
</dependency>

spring-context-support를 마이그레이션 하지 않으면 java class단에서 import가 안됨

 

root-context.xml에 mail전송에 관한 bean 등록

<!-- google email -->
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="host" value="smtp.gmail.com" />
    <property name="port" value="587" />
    <property name="username" value="아이디@gmail.com" />
    <property name="password" value="비밀번호" />
    <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.debug">true</prop>
        </props>
    </property>
</bean>

 

메일 전송을 위한 비즈니스 로직 작성

// import 확인
import javax.mail.internet.MimeMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;

// 메일 전송을 위한 객체 DI
@Autowired
private JavaMailSender mailSender;

@Override
public int emailCertify(String email) throws Exception {
    MimeMessage message = mailSender.createMimeMessage();
    MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "UTF-8");

    messageHelper.setFrom("아이디@gmail.com"); // 보내는사람 생략하거나 하면 정상작동을 안함
    messageHelper.setTo("아이디@mail.com"); // 받는사람 이메일
    messageHelper.setSubject("메일전송 test"); // 메일제목은 생략이 가능하다
    messageHelper.setText("내용 test"); // 메일 내용

    mailSender.send(message);
    }

    return result;
}

 

다음의 주소에 들어가 "구글 계정의 보안 수준이 낮은 앱 허용"을 사용으로 변경하여 준다.

https://myaccount.google.com/lesssecureapps