반응형

 


 

 

 김춘장이의 위키백과 - 나만의 공부 기록 Tistory 

 

gayulz - Overview

개발자가 되고싶은 개발어린이💟. gayulz has 11 repositories available. Follow their code on GitHub.

github.com

 

GitHub - gayulz/EMBAD_project: EMBAD , MY PROJECT

EMBAD , MY PROJECT. Contribute to gayulz/EMBAD_project development by creating an account on GitHub.

github.com

 


 

🙏 양해의 말씀

그동안 포스팅을 잠시 미뤘다.

마지막 프로젝트에 집중하고 싶었고, 이 프로젝트는 이력서에도 포트폴리오에도 첨삭되는 거라 

옵시디언에 열심히 중간중간 메모 하며 포스팅만 미루었다.

지금은 최종 PPT가 완료되고, 포트폴리오 정리를 하면서 미루었던 포스팅을 다시 올려 본다


 

 

 

 

 

 

메일서버, SMTP

SMTP는 Simple Mail Transfer Protocol로서 전자 메일 전송을 위한 표준 프로토콜이다.
이메일을 송신하는 서버이고 메일전송 프로토콜은 SMTP , POP3가 있다
POP3는 이메일 수신
SMTP Server를 통해 메일 전송할 땐 2가지 방법이 있다

  1. 메일 서버가 릴레이를 혀용 하는 경우
    • 외부(외부 망)에서 해당 메일서버를 경유해 외부로 메일을 보내는 것을 릴레이라 함
    • 계정이 존재하지 않더라도 메일 발송 가능
    • 릴레이 허용 시 잘못된 방식(스팸)으로 악용될 수 있다
    • 특정 IP에서만 릴레이 되도록 하는 게 일반적 방식
  2. 메일 서버에 계정 인증 후 메일 전송 방식
    2가지 방법 중 선택한 방법을 적용하는 것은 MailSender Bean등록에서 명시한다

 

 

 

 

순서

  1. pom.xml설정
  2. MailSender Bean등록
  3. Controller 추가
  4. 메일 계정 보안 설정

 

 

 

 

준비물

  • 구글이메일을 사용함
  • 구글 이메일 보안설정 필요 <참고링크>

 

 

 

dependency pom.xml

<dependency>  
    <groupId>javax.mail</groupId>  
    <artifactId>mail</artifactId>  
    <version>1.4.7</version>  
</dependency>  
<dependency>  
    <groupId> org.springframework </groupId>  
    <artifactId>spring-context-support</artifactId>  
    <version>${org.springframework-version}</version>  
</dependency>
  • javax.mail 주요 클래스
    Session, Message, Address, Authenticator, Tranport
    단점 : 여러 설정을 해야 한다
  • spring-context-support
    JavaMailSender 인터페이스를 사용하기 위해 필요함,
    mail라이브러리를 간단하게 설정하도록 도와준다
    MIME형식의 메일로 발송가능 javax.mail.MimeMessage가능
  • SpringFramework에서 JavaMailSender 인터페이스와 비슷한 역할을 하는 MailSender가 있음
    차이 : MainSender는 SimpleMailMessageaks 가능
  • SimpleMailMessage는 단순 텍스트 메시지만 가능
    MimeMessage는 텍스트+이미지, 첨부파일이 메시지에 포함가능

 

 

 

Bean 등록 root-context.xml

<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
<property name="host" value="stmp 도메인 주소"/> 

</bean>](<%3C!-- gmail설정 --%3E
<bean id="mailSender2" class="org.springframework.mail.javamail.JavaMailSenderImpl"> 
     <property name="host" value="smtp.gmail.com" />
     <property name="port" value="587" />
 <property name="username" value="your_email"/> <!-- 자신의 이메일 아이디 -->
 <property name="password" value="your_password!"/> <!-- 자신의 비밀번호 -->
 <!-- 보안연결 TLS과 관련된 설정 -->
     <property name="javaMailProperties">
    <props>
       <prop key="mail.smtp.auth">true</prop>
       <prop key="mail.smtp.starttls.enable">true</prop>
    </props>
     </property>
</bean>

- host : “smtp.gmail.com” 입력
 - port : “587” 입력
 - username : 자신의 이메일 아이디 입력
 - password : 자신의 이메일 비밀번호 입력

<참고사이트>

 

 

Controller

방법은 2가지이다

  1. MimeMessage객체를 직접 생성 후 메일 발송
  2. MimeMessagePreparator를 사용하여 전송

필요정보

  • 보내는 사람의 이메일 주소
  • 받는 사람의 이메일 주소
  • 메일 제목
  • 메일 내용

VO객체에 담거나 메서드 내에 직접 삽입도 가능하다

import 클래스

import javax.mail.internet.MimeMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;


@Autowired
private JavaMailSender mailSender; // 주입

Spring에서 Email 전송을 구현할 때 사용하는 인터페이스
MailSender

  • MailSender인터페이스를 JavaMailSender가 상속받는다
  • 구현체는 JavaMailSenderImpl이다.

 

 

 

이론

스프링프레임워크에 기본 메일 인터페이스는 MailSender이다.
MailSender
   ㄴ JavaMailSender
      ㄴ JavaMailSenderImpl

 

 

 

순서

  1. Properties파일에 먼저 구글 이메일 발송에 필요한 설정들을 선언해 놓는다
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=<login user to smtp server>
spring.mail.password=<login password to smtp server>
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
  1. EmailSender interface 정의
  2. EmailServiceImpl 구현
반응형
유리쯔의일상