Java/Spring
[Spring] 구글 메일 전송
usang0810
2020. 3. 5. 15:15
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