spring mail qq 메 일 서버 를 통 해 메 일 을 보 냅 니 다.

6090 단어 springmail우편물
spring mail 은 자바 메 일의 메 일 서 비 스 를 패키지 하여 메 일 서 비 스 를 더욱 간단하게 사용 합 니 다.다음은 qq 메 일 서버 를 예 로 들 어 spring mail 서비스 로 메 일 을 보 냅 니 다.
qq 메 일 박스 설정,"설정"-"계 정",smtp 서 비 스 를 열 고 인증 코드 생 성

인증 코드 를 만 들 려 면 핸드폰 을 검증 해 야 합 니 다.그 다음 에 qq 메 일 계 정과 인증 코드 로 메 일 을 보 낼 수 있 습 니 다.qq 비밀번호 가 필요 없습니다.
spring mail 서 비 스 는 spring-context-support 에서 의존 도 를 설정 한 다음 qq 메 일 로 제공 하 는 발송 서버 를 통 해 메 일 을 보 낼 수 있 습 니 다.

<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>3.2.17.RELEASE</version>
</dependency>
일반 텍스트 메 일
우선 테스트 는 일반 텍스트 메 일 입 니 다.

package com.xmyself.mail;
 
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
 
public class Main {
 public static void main(String[] args) {
  JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
  mailSender.setHost("smtp.qq.com");
  mailSender.setPort(587);
  mailSender.setUsername("[email protected]");
  mailSender.setPassword("dsruklozelxcbdba");//   
   
  SimpleMailMessage mail = new SimpleMailMessage();
  mail.setTo("[email protected]");
  mail.setFrom("[email protected]");
  mail.setSubject("test mail");
  mail.setText("test mail content");
   
  mailSender.send(mail);
  System.out.println("success");
 }
}
실행 하면 이메일 한 통 을 보 낼 수 있 습 니 다.주의:인증 코드 는 비밀번호 가 아니 라 포트 는 25 가 아니 라 587 입 니 다.
다음은 mailSender 가 변 하지 않 고 mail 형식 을 수정 하여 내용 이 풍부 한 메 일 을 보 냅 니 다.
단순 html 메 일
메 일 내용 을 html 형식 으로 보 여 주 려 면 다음 과 같이 수정 해 야 합 니 다.

MimeMessage mail = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mail, true);//true    multipart  ,       
 
helper.setTo("[email protected]");
helper.setFrom("[email protected]");
helper.setSubject("test mail");
helper.setText("<html><head></head><body>"
  + "<h1>hello!!spring html Mail</h1>"
  + "</body></html>"
  , true);
여전히 mailSender 로 이 메 일 을 보 냅 니 다.
mailSender.send(mail);
그림 이 있 는 html 메 일
메 일의 html 내용 에 그림 을 삽입 하여 텍스트 내용 을 수정 하면 됩 니 다.

helper.setText("<html><head></head><body>"
  + "<h1>hello!!spring html Mail</h1>"
  + "<img src=\"cid:image\" />"
  + "</body></html>"
  , true);
FileSystemResource image = new FileSystemResource(new File("d:/test.jpg"));
helper.addInline("image", image);
첨부 된 html 메 일
메 일 에 첨부 파일 을 추가 합 니 다.text 내용 은 변 하지 않 습 니 다.다음 과 같이 수정 하 십시오.

helper.setText("<html><head></head><body>"
  + "<h1>hello!!spring html Mail</h1>"
  + "</body></html>"
  , true);
FileSystemResource image = new FileSystemResource(new File("d:/test.jpg"));
helper.addAttachment("test.jpg", image);
freemarker 템 플 릿 메 일
html 내용 이 매우 풍부 합 니 다.setText()방법 에 직접 쓰 는 것 은 너무 복잡 합 니 다.따라서 html 를 파일 로 따로 관리 한 다음 에 도구 로 그 내용 을 문자열 로 변환 하여 setText()의 매개 변수 로 해 야 합 니 다.다음은 freemarker 템 플 릿 엔진 을 예 로 들 겠 습 니 다.
프로젝트 src/main/resources 디 렉 터 리 에 templates 디 렉 터 리 를 새로 만 듭 니 다.그 안에 test.ftl 파일 을 넣 습 니 다.내용 은 다음 과 같 습 니 다.

<html>
 <head></head>
 <body>
  <p>test freemarker template, welcome ${username}</p>
  <img src="cid:image" />
 </body>
</html>
그리고 freemarker 와 spring 이 제공 하 는 도구 로 내용 을 문자열 로 변환 합 니 다.이것 은 당연히 새로운 jar 에 의존 해 야 합 니 다.

<dependency>
 <groupId>org.freemarker</groupId>
 <artifactId>freemarker</artifactId>
 <version>2.3.23</version>
</dependency>
새 FreemarkerParser.java

package com.xmyself.mail;
 
import java.util.Map;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
import freemarker.template.Configuration;
import freemarker.template.Template;
 
public class FreemarkerParser {
 public String toHtmlString(String name, Map<String, String> data) {
  @SuppressWarnings("deprecation")
  Configuration config = new Configuration();
  config.setClassForTemplateLoading(this.getClass(), "/templates/");
  try {
   Template template = config.getTemplate(name);
   return FreeMarkerTemplateUtils.processTemplateIntoString(template, data);
  } catch (Exception e) {
   e.printStackTrace();
  }
  return "fail";
 }
}
템 플 릿 의${}내용 을 map 의 값 으로 바 꾸 고 템 플 릿 파일 을 String 문자열 로 변환 합 니 다.
메모:과정 에서 템 플 릿 경로 의 설정 과 읽 기 는 번 거 로 운 일 입 니 다.잠시 이런 식 으로 처리 합 니 다.
메 일 을 보 내 는 코드 는 아주 작은 변화 만 필요 합 니 다.

Map<String, String> data = new HashMap<String, String>();
data.put("username", "chengyi");
String text = new FreemarkerParser().toHtmlString("test.ftl", data);
 
helper.setText(text, true);
FileSystemResource image = new FileSystemResource(new File("d:/test.jpg"));
helper.addInline("image", image);

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기