SpringBoot 기초 튜 토리 얼 통합 메 일 서비스

머리말
Spring Email 추상 적 인 핵심 은 MailSender 인터페이스 로 MailSender 의 실현 은 Email 을 메 일 서버 에 보 내 고 메 일 서버 에서 메 일 을 보 내 는 기능 을 실현 할 수 있다.

Spring 은 자체 적 으로 MailSender 의 자바 MailSenderImpl 을 가 져 왔 습 니 다.자바 메 일 API 를 사용 하여 이메일 을 보 냅 니 다.Spring 이나 SpringBoot 는 이메일 을 보 내기 전에 자바 MailSenderImpl 을 Spring 응용 컨 텍스트 의 bean 으로 설치 해 야 합 니 다.
배치
1、pom.xml 

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2、application.yml

spring:
 mail:
  host: smtp.163.com
  port: 25
  username: 159****[email protected]
  password: ***********
host 속성 은 기본적으로 자바 메 일 세 션 의 호스트 입 니 다.port 포트 기본 감청 표준 SMTP 포트 25;메 일 서버 에 인증 이 필요 하 다 면 userrname 과 password 를 설정 해 야 합 니 다.
여기 서 제 가 사용 하 는 것 은 163 메 일 서버 입 니 다.163 메 일 에서 클 라 이언 트 인증 비밀 번 호 를 켜 야 합 니 다.그렇지 않 으 면 550 인증 오 류 를 보고 할 것 입 니 다.
   
3、EmailConfig.java
여기 서 우 리 는 자바 메 일 SenderImpl 을 Spring 응용 컨 텍스트 의 Bean 으로 조립 합 니 다.또한 주의해 야 할 것 은@ConfigurationProperties 주 해 를 사 용 했 습 니 다.이 주 해 는 setter 방법 이 있 고 시작 클래스 에서@EnableConfigurationProperties 주 해 를 사용 하여 효력 을 발생 시 켜 야 합 니 다.

@Configuration
@ConfigurationProperties(prefix = "spring.mail")
public class EmailConfig {

  private String host;
  private Integer port;
  private String username;
  private String password;

  @Bean
  public MailSender javaMailSender() {
    JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
    javaMailSender.setHost(host);
    javaMailSender.setPort(port);
    javaMailSender.setUsername(username);
    javaMailSender.setPassword(password);
    return javaMailSender;
  }

  public void setHost(String host) {
    this.host = host;
  }
  public void setPort(Integer port) {
    this.port = port;
  }
  public void setUsername(String username) {
    this.username = username;
  }
  public void setPassword(String password) {
    this.password = password;
  }
}
발송
자바 메 일 Sender 가 있 으 면 메 일 을 보 내 는 것 은 더 이상 간단 할 수 없 는 일이 다.우 리 는 자바 메 일 Sender 의 Bean 을 우리 자신의 실현 클래스 에 주입 한 다음 자바 메 일 API 를 사용 하여 이메일 을 보 내야 합 니 다.
1.텍스트 메 일 발송

public void sendSimpleEmail() {
  //   Email  
  SimpleMailMessage message = new SimpleMailMessage();
  message.setFrom("159****[email protected]");
  message.setTo("****@qianxx.com");
  message.setSubject("    ");
  message.setText("    ");
  javaMailSender.send(message);
}
일반 텍스트 의 Email 은 Simple MailMessage 인 스 턴 스 를 구성 하 는데 이 대상 은 이메일 메 시 지 를 편리 하 게 보 낼 수 있 습 니 다.
2.첨부 메 일 발송
Spring 의 Email 기능 은 일반 텍스트 의 Email 에 국한 되 지 않 습 니 다.우 리 는 첨부 파일 도 추가 할 수 있다.첨부 파일 이 있 는 Email 을 보 내 려 면,관건 적 인 기 교 는 multipart 형식의 메 시 지 를 만 드 는 것 입 니 다.-Email 은 여러 부분 으로 구성 되 어 있 으 며,그 중 일 부 는 Email 체 이 고,다른 부분 은 첨부 파일 입 니 다.multipart 형식의 Email 을 보 내기 위해 서 는 MIME(Multipurpose Internet Mail Extensions)메 시 지 를 만들어 야 합 니 다.

public void mimeEmail() throws MessagingException {
  // MimeMessage     API     ,       MimeMessageHelper
  MimeMessage mimeMessage = javaMailSender.createMimeMessage();
  //        true ,        multipart   /
  MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
  mimeMessageHelper.setFrom("159****[email protected]");
  mimeMessageHelper.setTo("****@qianxx.com");
  mimeMessageHelper.setSubject("      ");
  mimeMessageHelper.setText("      ");
  //    ,           Email       ,          
  mimeMessageHelper.addAttachment("boot.png", new ClassPathResource("public/images/boot.png"));
  javaMailSender.send(mimeMessage);
}
3.부 텍스트 메 일 발송
Spring 의 Email 기능 은 첨부 파일 을 추가 하 는 것 외 에 도 HTML 을 사용 하여 메시지 체 의 내용 을 미화 할 수 있다.부 텍스트 를 보 내 는 Email 은 간단 한 텍스트 를 보 내 는 Email 과 크게 다 르 지 않 습 니 다.관건 은 setText()방법의 메시지 텍스트 를 HTML 로 설정 하고 두 번 째 인 자 를 true 로 설정 하 는 것 입 니 다.이것 은 HTML 의 부 텍스트 임 을 표시 합 니 다.

public void htmlEmail() throws MessagingException {
  MimeMessage mimeMessage = javaMailSender.createMimeMessage();
  MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
  mimeMessageHelper.setFrom("159****[email protected]");
  mimeMessageHelper.setTo("****@qianxx.com");
  mimeMessageHelper.setSubject("       ");
  String html = "<html><body><h4>Hello,SpringBoot</h4><img src='cid:boot' /></body></html>";
  mimeMessageHelper.setText(html, true);
  //        cid,               ,           
  mimeMessageHelper.addInline("boot", new ClassPathResource("public/images/boot.png"));
  javaMailSender.send(mimeMessage);
}
4.Thymeleaf 템 플 릿 사용
HTML 태그 의 문자열 조합 은 매우 까다 로 운 일이 다.당신 의 머 릿 속 에서 HTML 라벨 을 분석 하고 렌 더 링 할 때 어떤 모습 을 보일 지 상상 하 는 것 은 매우 어렵 기 때 문 입 니 다.HTML 을 자바 코드 에 섞 으 면 이 문 제 를 더욱 복잡 하 게 만 들 수 있다.
따라서 Spring 이 제시 한 솔 루 션 은 템 플 릿 을 사용 하여 HTML 텍스트 를 만 들 고 아파 치 Velocity 와 Thymeleaf 를 포함 한 다양한 템 플 릿 방안 을 선택 할 수 있 습 니 다.여기 서 Thymeleaf 템 플 릿 의 용법 만 소개 합 니 다.
1.Thymeleaf 템 플 릿―  email.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>Email</title>
</head>
<body>
<img src='cid:boot'>
<h4><span th:text="${title}">Craig Walls</span> says... </h4>
<i><span th:text="${content}">Hello Boot!</span></i>
</body>
</html>
2.메 일 발송

@RunWith(SpringRunner.class)
@SpringBootTest
public class ThymeleafApplicationTests {

  @Autowired
  private JavaMailSender javaMailSender;
  @Autowired
  private SpringTemplateEngine templateEngine;

  @Test
  public void contextLoads() throws MessagingException {
    MimeMessage mimeMessage = javaMailSender.createMimeMessage();
    MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
    mimeMessageHelper.setFrom("159****[email protected]");
    mimeMessageHelper.setTo("****@qianxx.com");
    mimeMessageHelper.setSubject("ThymeLeaf     ");
    //    Thymeleaf      html   
    Context ctx = new Context();
    ctx.setVariable("title", "Craig Walls");
    ctx.setVariable("content", "Hello Boot!");
    String emailText = templateEngine.process("email/email", ctx);
    mimeMessageHelper.setText(emailText, true);
    //        cid,               ,           
    mimeMessageHelper.addInline("boot", new ClassPathResource("/static/img/boot.png"));
    javaMailSender.send(mimeMessage);
  }
}
데모 소스 코드:https://github.com/JMCuixy/Boot
총결산
SpringBoot 기초 튜 토리 얼 의 통합 메 일 서비스 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 SpringBoot 통합 메 일 서비스 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기