>Java >java지도 시간 >springboot에서 이메일 전송 기능을 구현하는 방법

springboot에서 이메일 전송 기능을 구현하는 방법

PHPz
PHPz앞으로
2023-05-13 10:10:061520검색

이메일 보내기는 매우 일반적인 기능이며 Java로 구현하려면 JavaMailSender 인터페이스가 필요합니다. springboot 프로젝트에서는 spring-boot-starter-mail이라는 종속성을 도입해야 합니다. 이메일 형식에 대한 요구 사항이 있는 경우 html 파일을 작동할 수 있는 spring-boot-starter-thymeleaf 종속성을 도입할 수 있습니다.

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

다른 자동 구성 모듈과 마찬가지로 종속성 도입이 완료된 후 해당 속성 값을 application.properties에서 구성해야 합니다. 그렇지 않으면 실행 중인 메서드가 항상 null 포인터를 보고합니다.

1. 새로운 springboot 프로젝트를 생성합니다.

1. 아이디어를 열고 왼쪽 상단에 있는 도구 모음에서 파일 버튼을 클릭하여 새 부팅 프로젝트를 만듭니다

springboot에서 이메일 전송 기능을 구현하는 방법

2. 다음을 클릭하고 기본 종속성을 선택합니다. 일반적인 종속성에는 데이터베이스 연결, 웹 등이 포함됩니다.

springboot에서 이메일 전송 기능을 구현하는 방법

3. finsh를 클릭하고 부팅 프로젝트 디렉터리가 생성될 때까지 기다립니다. 현재 디렉토리는 불완전하므로 java 및 resources 폴더를 직접 추가해야 합니다. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고

springboot에서 이메일 전송 기능을 구현하는 방법

을 선택하여 추가하세요.

springboot에서 이메일 전송 기능을 구현하는 방법

4. 그런 다음 pom 파일을 열고 종속성을 도입합니다.

5. 구성 파일을 열고 해당 매개변수를 작성합니다.

springboot에서 이메일 전송 기능을 구현하는 방법

프로젝트가 완료되면 테스트 클래스 작성을 시작합니다.

2. 이메일 보내기

1. util 클래스를 만들고 보내기 로직을 ​​구현하는 비즈니스 클래스를 작성합니다. 이메일을 보낼 때 첨부 파일과 html 스타일을 사용하여 형식을 구현하고 싶기 때문에 도구 클래스를 작성할 필요가 없습니다. , 비동기식일 수 있습니다. 이메일, 특히 비동기식 이메일을 운영할 때 이메일을 보내는 것은 시간이 많이 걸린다는 것을 모두 알고 있습니다.

springboot에서 이메일 전송 기능을 구현하는 방법

2. 비동기 호출을 작성하는 방법을 추가합니다.

*비동기 메서드가 필요한 경우 @Async를 추가합니다.
*시작 클래스에서 비동기를 활성화하는 @EnableAsync 메서드를 추가해야 합니다.
*참고 aop 프록시 때문일 수 있습니다. 호출된 메서드와 호출 위치의 코드가 동일한 클래스에 있으면 이 클래스 호출과 동일하며 프록시 클래스가 사용되지 않으므로 @Async는 효과가 없습니다. 그냥 도구 클래스입니다.

3. 코드: 첨부 파일이 포함된 이메일

 @Test
    public void sendAttachmentsMail() {
        Context context = new Context();
        context.setVariable("agencyName", "11");
        context.setVariable("busTypeName", "22");
        context.setVariable("busAllowance", 33);
        String emailContent = templateEngine.process("emailTeplate", context);
 
        try {
            emailService.sendAttachmentsMail(new String[]{"xxx.com"}, "测试提示", emailContent);
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("send mail success!,please wait a few mintens");
    }
/**
     * fujian
     * @throws Exception
     */
    @Async
    public void sendAttachmentsMail(String[] to, String subject, String contnet) throws Exception {
 
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
        helper.setFrom("xxx.com");
        helper.setTo(to);
        helper.setSubject(subject);
        helper.setText(contnet,true);
        Path picturePath = Paths.get("E:WorkFiles	estBill", "test.png");
        byte[] bytes = Files.readAllBytes(picturePath);
        helper.addAttachment("附件-1.jpg", picturePath.toFile());
 
        mailSender.send(mimeMessage);
 
    }

이메일이 성공적으로 전송되었습니다

springboot에서 이메일 전송 기능을 구현하는 방법

위 내용은 springboot에서 이메일 전송 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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