>Java >java지도 시간 >Spring Boot에서 JavaMailSender를 사용하여 이메일을 보내는 방법의 예(소스 코드 첨부)

Spring Boot에서 JavaMailSender를 사용하여 이메일을 보내는 방법의 예(소스 코드 첨부)

黄舟
黄舟원래의
2017-03-09 10:10:202030검색

이 기사에서는 Spring Boot에서 JavaMailSender를 사용하여 이메일을 보내는 방법에 대한 예제를 주로 소개합니다. Spring을 사용해 본 많은 개발자는 Spring이 이메일을 보내기 위한 매우 사용하기 쉬운 JavaMailSender 인터페이스를 제공한다는 것을 알고 있을 것입니다. Spring Boot의 Starter 모듈에서도 자동 구성이 제공됩니다. 도움이 필요한 친구들이 참고할 수 있습니다.

빠른 시작

Spring Boot 프로젝트의 pom.xml에 spring-boot-starter-mail 종속성을 도입하세요.

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

다른 자동 구성 모듈과 마찬가지로 종속성 소개를 완료한 후 application.properties에서 해당 속성 내용만 구성하면 됩니다.

아래에서는 QQ 메일함을 예로 들어 application.properties에 다음 구성을 추가합니다(사용자 이름과 비밀번호를 바꾸려면 주의하세요):

spring.mail.host=smtp.qq.com
spring.mail.username=用户名
spring.mail.password=密码
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true

단위 테스트를 사용하여 간단한 이메일 보내기를 구현합니다.

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
public class ApplicationTests {
 @Autowired
 private JavaMailSender mailSender;
 @Test
 public void sendSimpleMail() throws Exception {
 SimpleMailMessage message = new SimpleMailMessage();
 message.setFrom("dyc87112@qq.com");
 message.setTo("dyc87112@qq.com");
 message.setSubject("主题:简单邮件");
 message.setText("测试邮件内容");
 mailSender.send(message);
 }
}

이제 간단한 이메일 보내기가 완료됩니다. 단위 테스트를 하고 어떻게 작동하는지 알아볼까요?

“Spring Boot의 스타터 모듈은 자동화된 구성을 제공하므로 spring-boot-starter-mail 종속성을 도입한 후 구성 파일의 내용을 기반으로 JavaMailSender 인스턴스가 생성되므로 다음과 같은 경우 직접 구성할 수 있습니다. 메일 전송 객체를 소개하려면 @Autowired를 직접 사용하세요.”

고급 사용

위의 예에서는 SimpleMailMessage를 사용하여 구현합니다. .간단한 이메일 전송을 위해 사용되지만 실제 사용시에는 첨부파일을 가져오거나 이메일 모듈 등을 사용할 수도 있습니다. 이번에는 좀 더 복잡한 이메일 콘텐츠를 설정하기 위해 MimeMessage를 사용해야 합니다.

첨부 파일 보내기

위 단위 테스트에 다음 테스트 사례를 추가합니다(MimeMessageHelper를 통해 첨부 파일이 포함된 이메일 보내기):

@Test
public void sendAttachmentsMail() throws Exception {
 MimeMessage mimeMessage = mailSender.createMimeMessage();
 MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
 helper.setFrom("dyc87112@qq.com");
 helper.setTo("dyc87112@qq.com");
 helper.setSubject("主题:有附件");
 helper.setText("有附件的邮件");
 FileSystemResource file = new FileSystemResource(new File("weixin.jpg"));
 helper.addAttachment("附件-1.jpg", file);
 helper.addAttachment("附件-2.jpg", file);
 mailSender.send(mimeMessage);
}

정적 리소스 삽입

첨부 파일을 보내는 것 외에도 이메일 콘텐츠에 이미지와 같은 정적 리소스를 삽입하여 이메일에 대한 접근성을 높일 수 있습니다. 더 나은 읽기 환경을 위해 첨부 파일의 특정 이미지를 보는 대신 다음 테스트 사례에서는 MimeMessageHelper를 통해 이메일 본문에 정적 리소스를 포함하는 방법을 보여줍니다.

@Test
public void sendInlineMail() throws Exception {
 MimeMessage mimeMessage = mailSender.createMimeMessage();
 MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
 helper.setFrom("dyc87112@qq.com");
 helper.setTo("dyc87112@qq.com");
 helper.setSubject("主题:嵌入静态资源");
 helper.setText("<html><body><img src=\"cid:weixin\" ></body></html>", true);
 FileSystemResource file = new FileSystemResource(new File("weixin.jpg"));
 helper.addInline("weixin", file);
 mailSender.send(mimeMessage);
}

여기서 주목해야 할 점은 addInline 함수의 리소스 이름 weixin이 본문의 cid:weixin과 일치해야 한다는 것입니다.

템플릿 이메일

보통 이메일 전송 서비스를 사용할 때 비밀번호 재설정, 등록 확인 등 몇 가지 고정된 시나리오가 있으며 전송되는 콘텐츠의 극히 일부만 사용자마다 다를 수 있습니다. 따라서 우리는 다양한 유형의 이메일에 대한 템플릿을 설정하기 위해 템플릿 엔진을 사용할 것이므로 전송할 때 변경된 매개변수만 바꾸면 됩니다.

Spring Boot의 템플릿 엔진을 사용하여 템플릿 이메일 전송을 구현하는 것도 매우 쉽습니다. 이를 구현하기 위한 예로 Velocity를 들어보겠습니다.

속도 모듈의 종속성을 소개합니다.

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

resources/templates/에서 템플릿 페이지 template.vm을 만듭니다.

<html>
<body>
 <h3>你好, ${username}, 这是一封模板邮件!</h3>
</body>
</html>

이전에 Spring Boot에서 웹 애플리케이션을 개발할 때 Spring Boot의 자동화된 구성에서 템플릿은 기본적으로 resources/templates/ 디렉터리에 있다고 언급했습니다

마지막으로 다음과 같이 단위 테스트에 템플릿 이메일을 보내기 위한 테스트 사례를 추가합니다.

@Test
public void sendTemplateMail() throws Exception {
 MimeMessage mimeMessage = mailSender.createMimeMessage();
 MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
 helper.setFrom("dyc87112@qq.com");
 helper.setTo("dyc87112@qq.com");
 helper.setSubject("主题:模板邮件");
 Map<String, Object> model = new HashedMap();
 model.put("username", "didi");
 String text = VelocityEngineUtils.mergeTemplateIntoString(
 velocityEngine, "template.vm", "UTF-8", model);
 helper.setText(text, true);
 mailSender.send(mimeMessage);
}

실행해 보면 됩니다. 콘텐츠를 받으세요 알겠습니다, 디디, 이메일 입니다. 여기서는 사용자 이름 매개변수를 전달하여 이메일 콘텐츠의 템플릿에 있는 ${username} 변수를 대체합니다.


위 내용은 Spring Boot에서 JavaMailSender를 사용하여 이메일을 보내는 방법의 예(소스 코드 첨부)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.