>Java >java지도 시간 >SpringBoot 통합 메일 서비스에 대한 자세한 설명(코드 포함)

SpringBoot 통합 메일 서비스에 대한 자세한 설명(코드 포함)

不言
不言앞으로
2018-10-09 14:23:513605검색

이 글은 SpringBoot의 통합 이메일 서비스(코드 포함)에 대한 자세한 설명을 제공합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

1. 소개

Spring Email 추상화의 핵심은 MailSender 인터페이스입니다. MailSender의 구현은 메일 서버로 이메일을 보낼 수 있으며, 메일 서버는 메일 전송 기능을 구현합니다.

SpringBoot 통합 메일 서비스에 대한 자세한 설명(코드 포함)

Spring에는 JavaMail API를 사용하여 이메일을 보내는 MailSender 구현인 JavaMailSenderImpl이 함께 제공됩니다. Spring 또는 SpringBoot 애플리케이션이 이메일을 보내기 전에 Spring 애플리케이션 컨텍스트에서 JavaMailSenderImpl을 빈으로 어셈블해야 합니다.

2. 구성

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****2662@163.com
    password: ***********

포트 포트는 기본적으로 표준 SMTP 포트 25를 수신합니다. 메일 서버에는 인증이 필요하며, 사용자 이름과 비밀번호도 설정해야 합니다.

여기에서는 163 메일 서버를 사용하고 있습니다. 163 사서함에서 클라이언트 인증 비밀번호를 활성화해야 합니다. 그렇지 않으면 550 인증 오류가 보고됩니다.

SpringBoot 통합 메일 서비스에 대한 자세한 설명(코드 포함)

3. EmailConfig.java

여기에서는 JavaMailSenderImpl을 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;
    }
}

3. 보내기

javaMailSender를 사용하면 이메일을 보내는 것이 간단합니다. javaMailSender Bean을 자체 구현 클래스에 삽입한 다음 JavaMail API를 사용하여 이메일을 보내기만 하면 됩니다.

1. 텍스트 이메일 보내기

public void sendSimpleEmail() {
    // 构造Email消息
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom("159****2662@163.com");
    message.setTo("****@qianxx.com");
    message.setSubject("邮件主题");
    message.setText("邮件内容");
    javaMailSender.send(message);
}

일반 텍스트 이메일은 SimpleMailMessage 인스턴스 구성으로 구성됩니다. 이 개체는 이메일 메시지를 쉽게 보낼 수 있습니다.

2. 이메일 첨부파일 보내기

Spring의 이메일 기능은 일반 텍스트 이메일에만 국한되지 않습니다. 첨부 파일을 추가할 수도 있습니다. 첨부 파일이 포함된 이메일을 보내려는 경우 핵심 요령은 다음을 만드는 것입니다. 다중 부분 형식 메시지————이메일은 여러 부분으로 구성되며, 한 부분은 이메일 본문이고 다른 부분은 첨부 파일입니다. 멀티파트를 보내려면 이메일 유형의 경우 MIME(다용도 인터넷 메일 확장) 메시지를 생성해야 합니다.

public void mimeEmail() throws MessagingException {
    // MimeMessage 本身的 API 有些笨重,我们可以使用 MimeMessageHelper
    MimeMessage mimeMessage = javaMailSender.createMimeMessage();
    // 第二个参数是 true ,表明这个消息是 multipart类型的/
    MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
    mimeMessageHelper.setFrom("159****2662@163.com");
    mimeMessageHelper.setTo("****@qianxx.com");
    mimeMessageHelper.setSubject("附件邮件主题");
    mimeMessageHelper.setText("附件邮件内容");
    //添加附件,第一个参数表示添加到 Email 中附件的名称,第二个参数是图片资源
    mimeMessageHelper.addAttachment("boot.png", new ClassPathResource("public/images/boot.png"));
    javaMailSender.send(mimeMessage);
}

3. 서식 있는 텍스트 이메일 보내기

Spring의 이메일 기능은 첨부 파일을 추가하는 것 외에도 HTML을 사용하여 메시지 본문의 내용을 아름답게 만들 수도 있습니다. 서식 있는 텍스트 이메일 보내기와 간단한 텍스트 이메일 보내기 비교 이메일도 크게 다르지 않습니다. 핵심은 setText() 메소드의 메시지 텍스트를 HTML로 설정하고 두 번째 매개변수를 true로 설정하여 이것이 HTML임을 나타냅니다. 서식있는 텍스트.

public void htmlEmail() throws MessagingException {
    MimeMessage mimeMessage = javaMailSender.createMimeMessage();
    MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
    mimeMessageHelper.setFrom("159****2662@163.com");
    mimeMessageHelper.setTo("****@qianxx.com");
    mimeMessageHelper.setSubject("富文本邮件主题");
    String html = "<html><body><h4>Hello,SpringBoot</h4><img  src=&#39;cid:boot&#39; / alt="SpringBoot 통합 메일 서비스에 대한 자세한 설명(코드 포함)" ></body></html>";
    mimeMessageHelper.setText(html, true);
    // 设置内嵌元素 cid,第一个参数表示内联图片的标识符,第二个参数标识资源引用
    mimeMessageHelper.addInline("boot", new ClassPathResource("public/images/boot.png"));
    javaMailSender.send(mimeMessage);
}

4. 결론

HTML 태그의 문자열 연결은 매우 까다로운 작업입니다. 마음 속으로 HTML 태그를 구문 분석하고 렌더링 시 어떤 모습일지 상상하기 어렵기 때문입니다. HTML과 Java 코드를 혼합하면 문제가 더욱 복잡해집니다.

그래서 Spring에서 제공하는 솔루션은 템플릿을 사용하여 이메일을 생성하는 것입니다. Apache Velocity 및 Thymeleaf를 포함하여 선택할 수 있는 다양한 템플릿 솔루션이 있습니다. (저는 이 두 가지 템플릿 구문을 잘 다루지 못하기 때문에 자세히 소개하지 않겠습니다.)

데모 소스 코드: https://github.com/JMCuixy/Boot

위 내용은 SpringBoot 통합 메일 서비스에 대한 자세한 설명(코드 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제