SpringBoot 메 일 발송 기능 구현
어떤 친구 가 나 에 게 네가 이전에 메 일 기능 을 어떻게 했 느 냐 고 물 었 다.그리고 나 서 나 는 그 에 게 데 모 를 찾 아 주 었 는데,마침 여기에 도 써 서 모두 에 게 나 누 어 주 었 다.
통 증 을 정리 하 다
메 일 을 보 내 면 구덩이 가 어디 에 있 는 지 생각해 보 세 요.
세 개 라 고 생각 합 니 다.
첫째:메 일 화이트 리스트 문제.
둘째:메 일 시간 초과 문제.
셋째:메 일 첨부 파일 문제.
내 다음 데 모 는 모두 이 문제 들 을 소개 하고 해결 할 것 이다.
실현 방안
준비 작업
우 리 는 먼저 보 낼 수 있 는 메 일 을 준비 해 야 한다.나 는 나의 163 메 일 을 예 로 들 어 지금 메 일 을 보 내 는 규칙 은 권한 수여 코드 라 는 것 을 입력 하 라 고 요구한다.이 물건 은 비밀번호 가 아니 라 는 것 을 주의해 야 한다.
인증 코드 를 가 져 오 는 절차:
오픈 을 선택 하면 인증 을 통 해 인증 코드 를 얻 을 수 있 습 니 다.인증 코드 리 셋 을 선택 하 셔 도 가 져 올 수 있 습 니 다.17 년 전에 demo 를 썼 는데 19 년 에 또 하 나 를 열 었 습 니 다.예전 에 잊 어 버 렸 기 때 문 입 니 다.
SpringBoot 프로젝트 패키지 도입
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
yml 설정 메 일 관련
spring:
mail:
#
host: smtp.163.com
# ,
port: 25
#
default-encoding: utf-8
#
username: [email protected]
# ,
password: xxx
#
properties:
mail:
smtp:
# SSL , , qq
ssl:
enable: true
required: true
# ,
timeout: 10000
# ,
connectiontimeout: 10000
# ,
writetimeout: 10000
위 에서 제시 한 시간 초과 문제 에 대해 시간 초과 이상 을 포착 하면 해결 할 수 있다.메 일 발송 도구 클래스
주로 다음 도구 류 를 통 해 자바 메 일 을 보 내 는 수 요 를 만족 시 킬 수 있 습 니 다.yml 설정 을 잘 하면 SpringBoot 는 자바 MailSender 를 자동 으로 설정 하 는 데 도움 을 줄 것 입 니 다.우 리 는 이 자바 류 를 통 해 자바 작업 을 통 해 메 일 을 보 낼 수 있 습 니 다.다음은 몇 가지 자주 사용 하 는 우편물 을 열거 하 였 다.
@Service
public class MailService {
private static final Logger logger = LoggerFactory.getLogger(MailServiceImpl.class);
@Autowired
private JavaMailSender mailSender;
private static final String SENDER = "[email protected]";
/**
*
*
* @param to
* @param subject
* @param content
*/
@Override
public void sendSimpleMailMessge(String to, String subject, String content) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(SENDER);
message.setTo(to);
message.setSubject(subject);
message.setText(content);
try {
mailSender.send(message);
} catch (Exception e) {
logger.error(" !", e);
}
}
/**
* HTML
*
* @param to
* @param subject
* @param content
*/
@Override
public void sendMimeMessge(String to, String subject, String content) {
MimeMessage message = mailSender.createMimeMessage();
try {
//true multipart message
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(SENDER);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
mailSender.send(message);
} catch (MessagingException e) {
logger.error(" MimeMessge !", e);
}
}
/**
*
*
* @param to
* @param subject
* @param content
* @param filePath
*/
@Override
public void sendMimeMessge(String to, String subject, String content, String filePath) {
MimeMessage message = mailSender.createMimeMessage();
try {
//true multipart message
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(SENDER);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
FileSystemResource file = new FileSystemResource(new File(filePath));
String fileName = file.getFilename();
helper.addAttachment(fileName, file);
mailSender.send(message);
} catch (MessagingException e) {
logger.error(" MimeMessge !", e);
}
}
/**
*
*
* @param to
* @param subject
* @param content
* @param rscIdMap
*/
@Override
public void sendMimeMessge(String to, String subject, String content, Map<String, String> rscIdMap) {
MimeMessage message = mailSender.createMimeMessage();
try {
//true multipart message
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(SENDER);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
for (Map.Entry<String, String> entry : rscIdMap.entrySet()) {
FileSystemResource file = new FileSystemResource(new File(entry.getValue()));
helper.addInline(entry.getKey(), file);
}
mailSender.send(message);
} catch (MessagingException e) {
logger.error(" MimeMessge !", e);
}
}
}
메 일 보 낸 demo
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbooEmailDemoApplicationTests {
@Autowired
private MailService mailService;
private static final String TO = "[email protected]";
private static final String SUBJECT = " ";
private static final String CONTENT = "test content";
/**
*
*/
@Test
public void sendSimpleMailMessage() {
mailService.sendSimpleMailMessge(TO, SUBJECT, CONTENT);
}
/**
* html
*/
@Test
public void sendHtmlMessage() {
String htmlStr = "<h1>Test</h1>";
mailService.sendMimeMessge(TO, SUBJECT, htmlStr);
}
/**
*
* @throws FileNotFoundException
*/
@Test
public void sendAttachmentMessage() throws FileNotFoundException {
File file = ResourceUtils.getFile("classpath:test.txt");
String filePath = file.getAbsolutePath();
mailService.sendMimeMessge(TO, SUBJECT, CONTENT, filePath);
}
/**
*
* @throws FileNotFoundException
*/
@Test
public void sendPicMessage() throws FileNotFoundException {
String htmlStr = "<html><body> : 1 <br> <img src=\'cid:pic1\'/> <br> 2 <br> <img src=\'cid:pic2\'/></body></html>";
Map<String, String> rscIdMap = new HashMap<>(2);
rscIdMap.put("pic1", ResourceUtils.getFile("classpath:pic01.jpg").getAbsolutePath());
rscIdMap.put("pic2", ResourceUtils.getFile("classpath:pic02.jpg").getAbsolutePath());
mailService.sendMimeMessge(TO, SUBJECT, htmlStr, rscIdMap);
}
}
화이트 리스트 문제고정 메 일 로 보 내 는 경우 에는 고정 메 일 로 화이트 리스트 를 직접 설정 할 수 있 으 며,여러 메 일 로 자주 보 내 는 경우 에는 다음 과 같은 발송 시간 간격 을 두 고 한 메 일 로 계속 보 내지 않 는 것 이 좋다.
총결산
위 에서 말씀 드 린 것 은 편집장 님 께 서 소개 해 주신 SpringBoot 메 일 발송 기능 이 실현 되 었 습 니 다.여러분 께 도움 이 되 셨 으 면 합 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.