Spring) SMTP 이메일 전송 with 이미지 파일 첨부

이지우·2022년 10월 20일
0

SMTP
https://devofroad.tistory.com/43
https://unknown-coding.tistory.com/m/15
SMTP 파일 첨부
https://m.cafe.daum.net/ITVillage/PkLT/3

* pom.xml

<!-- 인증 메일 전송 관련 -->
		<!-- https://mvnrepository.com/artifact/com.sun.mail/javax.mail -->
		<dependency>
		    <groupId>com.sun.mail</groupId>
		    <artifactId>javax.mail</artifactId>
		    <version>1.6.2</version>
		</dependency>
		
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support -->
		<dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-context-support</artifactId>
		    <version>${org.springframework-version}</version>
		</dependency>
	<!-- 인증 메일 전송 관련 -->
* MemberServiceImpl

import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

// 회원가입 이메일 본인인증 메일 전송
	@Override
	public String sendVerificationEmail(String email) {

		String validationCode = RandomStringUtils.random(6, false, true);
		
		// 이메일 전송 양식
		String fromEmail = mailSender.getUsername();
		String toMail = email;
		String title = "[MOVIEPEDIA] 회원 가입 인증 이메일입니다.";
		String htmlContent = readTextFile("signUpVerificationEmailHtml.txt");
		htmlContent = htmlContent.replace("validationCode", validationCode);
		
		// 이메일 전송
		MimeMessage message = mailSender.createMimeMessage();
		
		try {
			MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
				// true 매개값 전달 시 multipart 형식의 메세지 전달이 가능해짐. 이때 문자 인코딩 설정도 가능
			
			helper.setFrom(fromEmail);
			helper.setTo(toMail);
			helper.setSubject(title);
			helper.setText(htmlContent, true); 
				// true 매개값 전달 시 html 형식으로 전송(작성 x-> 단순 텍스트로 전달)
			
			// 파일 첨부
			File file = new File("");
			log.info(file.getAbsolutePath() + "/src/main/webapp/resources/img/logo.png"); // 상대경로
			helper.addInline("logo", new FileDataSource("D:\\workspace_sts3_moviepedia\\moviepedia\\src\\main\\webapp\\resources\\img\\logo.png")); 
//			helper.addInline(contentId, dataSource); : 자원 첨부 메서드. FileDataSource 클래스 함께 이용
			
			
			mailSender.send(message);
			
		} catch (MessagingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return validationCode;
	}

profile
IT개발 입문합니다.

0개의 댓글