spring mail qq 메 일 서버 를 통 해 메 일 을 보 냅 니 다.
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);
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.