[Java] 이메일 전송

Yuni·2023년 3월 22일
0

Java

목록 보기
3/14

DB에 저장된 회원정보를 가지고 이메일을 보낼 것 이라
저장된 이메일을 찾아오고 보내주도록 하겠습니다

application.properties

#Java MailSender
spring.mail.host=smtp.naver.com
spring.mail.port=465
spring.mail.username=이메일@naver.com
spring.mail.password=비밀번호
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
spring.mail.properties.mail.smtp.auth=true
spring.mail.protocol=smtps

build.gradle

implementation 'org.springframework.boot:spring-boot-starter-mail'

MailHandlerService.java

public class MailHandlerService {

    private JavaMailSender sender;
    private MimeMessage message;
    private MimeMessageHelper messageHelper;

    // 생성자
    public MailHandlerService(JavaMailSender jSender) throws
            MessagingException {
        this.sender = jSender;
        message = jSender.createMimeMessage();
        messageHelper = new MimeMessageHelper(message, true, "UTF-8");
    }

    // 보내는 사람 이메일
    public void setFrom(String fromAddress) throws MessagingException {
        messageHelper.setFrom(fromAddress);
    }

    // 받는 사람 이메일
    public void setTo(String email) throws MessagingException {
        messageHelper.setTo(email);
    }

    // 보낼때 제목
    public void setSubject(String subject) throws MessagingException {
        messageHelper.setSubject(subject);
    }

    // 메일 내용
    public void setText(String text, boolean useHtml) throws MessagingException {
        messageHelper.setText(text, useHtml);
    }
        // 발송
    public void send() {
        try {
            sender.send(message);
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
}

MailSandService.java

 public void mailSendPw(String email, String newPassword) {
	        try {
	        	
	            MailHandlerService mailHandler = new MailHandlerService(mailSender);
	            
	            System.out.println(mailSender);

	            // 받는 사람
	            mailHandler.setTo(email);
	            // 보내는 사람
	            mailHandler.setFrom(FROM_ADDRESS);
	            // 제목
	            mailHandler.setSubject("[홈페이지이름] 임시비밀번호");
	            // HTML Layout
	            String htmlContent = "<p>" + "임시 비밀번호 :"+ newPassword;
	            mailHandler.setText(htmlContent, true);

	            mailHandler.send();
	        }
	        catch(Exception e){
	            e.printStackTrace();
	        }
	    }

DB에서 이메일 찾아오기 ↓

FindListMapper.xml

<select id="findEmail" parameterType="String" resultType="String" >
		SELECT user_email FROM tbl_user WHERE user_id=#{id}
</select>

FindListMapper.java

// 이메일찾기
	public String findEmail(String id);

FindListService.java

// 이메일찾기
	public String findEmail(String id) {
		return mapper.findEmail(id);
	}

Controller.java

String newPassword= findListService.getRamdomPassword(10); // 임시비밀번호
String email = findListService.findEmail(id); // 이메일 찾기
mailSandService.mailSendId(email,id); // 이메일 발송
+++ 추가 폼변경

이메일 폼 글씨에 색상 넣기

// HTML Layout
            StringBuffer sb = new StringBuffer();
            sb.append("<h1>아이디 임시비밀번호</h1><br>");
            sb.append("안녕하세요. ");
            sb.append("<font color='#1E90FF'>"+name+"</font>");
            sb.append(" 님, <br>");
            sb.append("귀하께서 요청하신 아이디와 임시비밀번호<br>");
            sb.append("수신을 위해 발송 된 메일입니다.<br>");
            sb.append("<br>");
            sb.append("고객님이 가입하신 아이디 "+"<font color='#1E90FF'>"+id+"</font>"+" 입니다.<br>");
            sb.append("임시비밀번호는 "+"<font color='#1E90FF'>"+newPassword+"</font>"+" 입니다.<br>");
            sb.append("로그인 후에는 새로운 비밀번호로 변경하셔야합니다.<br>");
            sb.append("감사합니다.<br>");
            String html = sb.toString();
            mailHandler.setText(html, true);

출처
https://victorydntmd.tistory.com/342#recentEntries

profile
backend developers

0개의 댓글