SPRING
2022.06.05 / 23:26

[Spring]¸ÞÀϼ­¹ö(SMTP Server)¸¦ ÀÌ¿ëÇÑ ¸ÞÀÏ Àü¼Û 2

ŹÃÄ
Ãßõ ¼ö 182

°³ÀÎ °øºÎ ÈÄ ÀڷḦ ³²±â±â À§ÇÑ ¸ñÀûÀ̱⿡ ³»¿ë »ó¿¡ ¿À·ù°¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù.


¸ñÇ¥

1. ½ºÇÁ¸µ¿¡¼­ SMTP ¼­¹ö¸¦ ÀÌ¿ëÇÑ ¸ÞÀÏ Àü¼ÛÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù.

2. 1ÀÇ ¸ñÇ¥ ±â´ÉÀ» ±¸ÇöÇϱâ À§ÇØ ±¸±Û, ³×À̹ö, ´ÙÀ½¿¡ ¾î¶°ÇÑ ¼³Á¤À» ÇؾßÇÏ´ÂÁö ¾Ë¾Æº¾´Ï´Ù.

3. ´Ü¼øÇÑ ÅؽºÆ®¸¸ Àü¼Û, À̹ÌÁö¸¦ Æ÷ÇÔÇÑ ¸ÞÀÏÀü¼Û, ¾÷·Îµå¸¦ Æ÷ÇÔÇÑ ¸ÞÀÏÀü¼ÛÀ» ¾Ë¾Æº¾´Ï´Ù.

 

¸ñÂ÷

0. °³¿ä

1. ¸ÞÀÏ °èÁ¤ º¸¾È ¼³Á¤

2. pom.xml ¼³Á¤

3. mailSender Bean µî·Ï

----- ¡èÀÌÀü Æ÷½ºÆà -----

4. Controller ¸Þ¼­µå Ãß°¡

5. ÅؽºÆ® / À̹ÌÁö / ¾÷·Îµå Àü¼Û

6. ¸ÞÀÏ Àü¼Û Å×½ºÆ®

 

4. Controller ¸Þ¼­µå Ãß°¡

 MimeMessage °´Ã¼¸¦ Á÷Á¢ »ý¼ºÇÏ¿© ¸ÞÀÏÀ» ¹ß¼ÛÇÏ´Â ¹æ¹ý°ú MimeMessagePreparator ¸¦ »ç¿ëÇؼ­ ¸ÞÀÏÀ» Àü¼ÛÇÏ´Â ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. µÎ°¡Áö ÄÚµå ¸ðµÎ ¾Ë¾Æº¸°Ú½À´Ï´Ù.

 

 º¸³»´Â ÀÌ À̸ÞÀÏ, ¹Þ´Â ÀÌ À̸ÞÀÏ, ¸ÞÀÏ Á¦¸ñ, ¸ÞÀÏ ³»¿ë 4°¡ÁöÀÇ µ¥ÀÌÅ͸¦ ÀÔ·ÂÇØÁÖ¾î¾ßÇϴµ¥ ÇØ´ç µ¥ÀÌÅ͵éÀ» VO°´Ã¼¿¡ ´ã¾Æ¼­µµ °¡´ÉÇÏ°í Controller ¸Þ¼­µå ³»¿¡ Á÷Á¢ »ðÀÔ ÇÏ´Â °Íµµ °¡´ÉÇÕ´Ï´Ù. À̹ø Æ÷½ºÆÿ¡¼± Á÷Á¢ »ðÀÔ ¹æ½ÄÀ¸·Î ÁøÇàÇÏ°Ú½À´Ï´Ù.

 

 ¸ÞÀÏÀü¼ÛÀ» À§ÇØ ÇÊ¿ä·ÎÇÑ Á¤º¸¸¦ ¼¼ÆÃÇÏ¿´´ø "mailSender" BeanÀ» ÀÎÁ§¼Ç(ÀÇÁ¸¼º ÁÖÀÔ) ÇÏ¿© »ç¿ëÇÏ°Ú½À´Ï´Ù. 

 

@Autowired
private JavaMailSender mailSender;

 

4.1 MimeMessage °´Ã¼¸¦ Á÷Á¢ »ý¼ºÇÏ¿© ¸ÞÀÏÀ» ¹ß¼ÛÇÏ´Â ¹æ¹ý

 

 À̹æ½ÄÀ» »ç¿ëÇϱâ À§ÇØ import µÇ´Â Ŭ·¡½ºµéÀº ¾Æ·¡¿Í °°½À´Ï´Ù. 

 

import javax.mail.internet.MimeMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;

 

*MimeMessage ´ë½Å SimpleMailMessage¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. µÑÀÇ Â÷ÀÌÁ¡Àº MimeMessageÀÇ °æ¿ì ¸ÖƼÆÄÆ® µ¥ÀÌÅ͸¦ ó¸® ÇÒ ¼ö ÀÖ°í SimpleMailMessage´Â ´Ü¼øÇÑ ÅؽºÆ® µ¥ÀÌÅ͸¸ Àü¼ÛÀÌ °¡´ÉÇÕ´Ï´Ù. 

 

 Controller¿¡ ¸Þ¼­µå´Â ¾Æ·¡¿Í °°ÀÌ ÀÛ¼ºÇϸéµË´Ï´Ù. 

 

@RequestMapping(value = "/sendMail", method = RequestMethod.GET)
    public void sendMailTest() throws Exception{
        
        String subject = "test ¸ÞÀÏ";
        String content = "¸ÞÀÏ Å×½ºÆ® ³»¿ë";
        String from = "º¸³»´ÂÀÌ ¾ÆÀ̵ð@µµ¸ÞÀÎÁÖ¼Ò";
        String to = "¹Þ´ÂÀÌ ¾ÆÀ̵ð@µµ¸ÞÀÎÁÖ¼Ò";
        
        try {
            MimeMessage mail = mailSender.createMimeMessage();
            MimeMessageHelper mailHelper = new MimeMessageHelper(mail,true,"UTF-8");
            // true´Â ¸ÖƼÆÄÆ® ¸Þ¼¼Áö¸¦ »ç¿ëÇϰڴٴ ÀǹÌ
            
            /*
             * ´Ü¼øÇÑ ÅؽºÆ® ¸Þ¼¼Áö¸¸ »ç¿ë½Ã¿£ ¾Æ·¡ÀÇ Äڵ嵵 »ç¿ë °¡´É 
             * MimeMessageHelper mailHelper = new MimeMessageHelper(mail,"UTF-8");
             */
            
            mailHelper.setFrom(from);
            // ºó¿¡ ¾ÆÀ̵𠼳Á¤ÇÑ °ÍÀº ´Ü¼øÈ÷ smtp ÀÎÁõÀ» ¹Þ±â À§ÇØ »ç¿ë µû¶ó¼­ º¸³»´ÂÀÌ(setFrom())¹Ýµå½Ã ÇÊ¿ä
            // º¸³»´ÂÀÌ¿Í ¸ÞÀÏÁÖ¼Ò¸¦ ¼ö½ÅÇÏ´ÂÀÌ°¡ º¼¶§ ¸ðµÎ Ç¥±â µÇ°Ô ¿øÇϽŴٸ頾Ʒ¡ÀÇ Äڵ带 »ç¿ëÇϽø頵˴ϴÙ.
            //mailHelper.setFrom("º¸³»´ÂÀÌ À̸§ <º¸³»´ÂÀÌ ¾ÆÀ̵ð@µµ¸ÞÀÎÁÖ¼Ò>");
            mailHelper.setTo(to);
            mailHelper.setSubject(subject);
            mailHelper.setText(content, true);
            // true´Â htmlÀ» »ç¿ëÇϰڴٴ ÀǹÌÀÔ´Ï´Ù.
            
            /*
             * ´Ü¼øÇÑ ÅؽºÆ®¸¸ »ç¿ëÇϽŴٸ頴ÙÀ½ÀÇ Äڵ带 »ç¿ëÇϼŵµ µË´Ï´Ù. mailHelper.setText(content);
             */
            
            mailSender.send(mail);
            
        } catch(Exception e) {
            e.printStackTrace();
        }
        
    }
cs

 

  - MimeMessageHelper mailHelper = new MimeMessageHelper(mail,true,"UTF-8") ¿¡¼­ true´Â ¸ÖƼÆÄÆ® ¸Þ¼¼Áö¸¦ »ç¿ëÇÏ°Ú´Ù´Â ÀǹÌÀÔ´Ï´Ù. ´Ü¼øÇÑ ÅؽºÆ® ¸Þ¼¼Áö¸¸ »ç¿ëÇÏ½Å´Ù¸é ¾Æ·¡ÀÇ Äڵ带 »ç¿ëÇϽøéµË´Ï´Ù.

 

  - mailHelper.setText(content, true) ¿¡¼­ true´Â htmlÀ» »ç¿ëÇÑ´Ù´Â ÀǹÌÀÔ´Ï´Ù. htmlÀ» »ç¿ëÇϰԵǸé À̹ÌÁö¸¦ ÷ºÎ ÇÒ ¼ö ÀÖ´Â <img>ű׸¦ »ç¿ë ÇÒ ¼ö ÀÖ½À´Ï´Ù. 

 

  - ´Ü¼øÇÑ ÅؽºÆ®¸¸ »ç¿ëÇÒ ½Ã¿£ mailHelper.setText(content)·Î »ç¿ëÇÏ½Ã¸é µË´Ï´Ù. 

 

  - º¸³»´ÂÀÌ(from)Àº ¹Ýµå½Ã ÀÖ¾î¾ßÇÕ´Ï´Ù. mailSender ºó¿¡¼­ ¾ÆÀ̵𸦠±âÀÔÇÏ¿´Áö¸¸ ÀÌ´Â SMTP »ç¿ë ±ÇÇÑÀ» ¾ò¾î ¿À´Â ¿ªÇÒÀ» ¼öÇàÇÕ´Ï´Ù.

 

  * ¸ÞÀÏ ÁÖ¼Ò¿¡ º¸³»´ÂÀÌ¿Í ¸ÞÀÏÁÖ¼Ò¸¦ ¸ðµÎ Ç¥±â¸¦ ¿øÇÑ´Ù¸é ¾Æ·¡¿Í °°ÀÌ ÀÛ¼ºÇÏ½Ã¸é µË´Ï´Ù.

 

mailHelper.setFrom("º¸³»´ÂÀÌ À̸§ <º¸³»´ÂÀÌ ¾ÆÀ̵ð@µµ¸ÞÀÎÁÖ¼Ò>");

 

4.2 MimeMessagePreparator¸¦ »ç¿ëÇؼ­ ¸ÞÀÏÀ» Àü¼ÛÇÏ´Â ¹æ¹ý

 

 ÇØ´ç ¹æ½ÄÀº MimeMessage¸¦ Á÷Á¢ °´Ã¼È­ ÇÏÁö ¾Ê°í MimeMessagePreparator Ŭ·¡½º¸¦ »ç¿ëÇÏ´Â ¹æ½ÄÀÔ´Ï´Ù. À̹æ½ÄÀ» »ç¿ëÇϱâÀ§ÇØ import µÇ´Â Ŭ·¡½º´Â ´ÙÀ½°ú °°½À´Ï´Ù.

 

 - 4.1°ú ´Ù¸¥Á¡Àº import org.springframework.mail.javamail.MimeMessagePreparator °¡ Ãß°¡ÀûÀ¸·Î Ãß°¡ µÈ´Ù´Â Á¡ÀÔ´Ï´Ù.

 

import javax.mail.internet.MimeMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.MimeMessagePreparator;

 

 - Controller¿¡ ¸Þ¼­µå´Â ´ÙÀ½°ú °°ÀÌ ÀÛ¼º ÇÏ½Ã¸é µË´Ï´Ù. 

 

 - new MimeMessageHelper(mail,true,"UTF-8") / mailHelper.setText(content, true) ´Â 4.1 ¼³¸í°ú µ¿ÀÏÇÕ´Ï´Ù.

 

    @RequestMapping(value = "/sendMail", method = RequestMethod.GET)
    public void sendMailTest2() throws Exception{
 
        String subject = "test ¸ÞÀÏ";
        String content = "¸ÞÀÏ Å×½ºÆ® ³»¿ë.";
        String from = "º¸³»´ÂÀÌ ¾ÆÀ̵ð@µµ¸ÞÀÎÁÖ¼Ò";
        String to = "¹Þ´ÂÀÌ ¾ÆÀ̵ð@µµ¸ÞÀÎÁÖ¼Ò";
        
        
        final MimeMessagePreparator preparator = new MimeMessagePreparator() {
            
            public void prepare(MimeMessage mimeMessage) throws Exception{
                final MimeMessageHelper mailHelper = new MimeMessageHelper(mimeMessage, true"UTF-8");
                
                mailHelper.setFrom(from);
                mailHelper.setTo(to);
                mailHelper.setSubject(subject);
                mailHelper.setText(content, true);
 
            }
            
        };
        
        try {    
            mailSender.send(preparator);
            
        } catch(Exception e) {
            e.printStackTrace();
        }        
        
    }
cs

 

5. ÅؽºÆ® / À̹ÌÁö / ¾÷·Îµå Àü¼Û

 ¼³¸íÇϱ⠾ռ­ À̹ÌÁö / ¾÷·Îµå Àü¼ÛÀ» À§Çؼ± ¸ÖƼÆÄÆ® ¸Þ¼¼Áö¸¦ Çã¿ëÇؾßÇϸç html Çã¿ëÀ» ¼³Á¤ÇØÁÖ¾î¾ßÇÕ´Ï´Ù. ÇØ´ç¹æ¹ýÀº 4.1¼³¸íÀ» Âü°í ºÎŹµå¸³´Ï´Ù. ÇØ´ç ¼³¸íÀº 4.1 ÀÇ Controller ¸Þ¼­µå Äڵ带 ±â¹ÝÀ¸·Î ÁøÇàÇÏ°Ú½À´Ï´Ù. 

 

// ¸ÖƼÆÄÆ® ¸Þ¼¼Áö Çã¿ë
MimeMessageHelper mailHelper = new MimeMessageHelper(mail,true,"UTF-8");
 
// html 
mailHelper.setText(content, true);

 

5.1 ´Ü¼ø ÅؽºÆ® 

 4.1 ÄÚµå ¿¹½Ã°¡ ¸Þ¼¼Áö ³»¿ëÀ» ´Ü¼øÇÑ ÅؽºÆ®·Î Àü¼ÛÇÏ´Â °ÍÀÔ´Ï´Ù. 

 

5.2 À̹ÌÁö

 À̹ÌÁö¸¦ ÷ºÎÇÏ´Â ¹æ¹ýÀº html Çã¿ëÀ» ¼³Á¤Ç߱⶧¹®¿¡ À̹ÌÁö ű×(<img>)¸¦ »ç¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°½À´Ï´Ù. 

 

    @RequestMapping(value = "/sendMail", method = RequestMethod.GET)
    public void sendMailTest() throws Exception{
        
        String subject = "test ¸ÞÀÏ";
        String content = "¸ÞÀÏ Å×½ºÆ® ³»¿ë" + "<img src=\"https://t1.daumcdn.net/cfile/tistory/214DCD42594CC40625\">";
        String from = "º¸³»´ÂÀÌ ¾ÆÀ̵ð@µµ¸ÞÀÎÁÖ¼Ò";
        String to = "¹Þ´ÂÀÌ ¾ÆÀ̵ð@µµ¸ÞÀÎÁÖ¼Ò";
        
        try {
            MimeMessage mail = mailSender.createMimeMessage();
            MimeMessageHelper mailHelper = new MimeMessageHelper(mail,true,"UTF-8");
            
            mailHelper.setFrom(from);
            mailHelper.setTo(to);
            mailHelper.setSubject(subject);
            mailHelper.setText(content, true);
            
            mailSender.send(mail);
            
        } catch(Exception e) {
            e.printStackTrace();
        }
        
    }

 

5.3 ¾÷·Îµå

 

 ¾÷·Îµå µÈ ÆÄÀÏÀ» Àü¼ÛÇϱâ À§Çؼ± Ãß°¡ÀûÀΠŬ·¡½º import°¡ ÇÊ¿ä·ÎÇÕ´Ï´Ù.

 

import org.springframework.core.io.FileSystemResource;
import java.io.File;

 

 Ãß°¡ÇØÁÖ¾î¾ßÇÒ ÄÚµå´Â ´ÙÀ½°ú °°½À´Ï´Ù.

 

FileSystemResource file = new FileSystemResource(new File("°æ·Î\¾÷·ÎµåÇÒÆÄÀÏ.Çü½Ä")); 
helper.addAttachment("¾÷·ÎµåÆÄÀÏ.Çü½Ä", file);

    @RequestMapping(value = "/sendMail", method = RequestMethod.GET)
    public void sendMailTest() throws Exception{
        
        String subject = "test ¸ÞÀÏ";
        String content = "¸ÞÀÏ Å×½ºÆ® ³»¿ë" + "<img src=\"https://t1.daumcdn.net/cfile/tistory/214DCD42594CC40625\">";
        String from = "º¸³»´ÂÀÌ ¾ÆÀ̵ð@µµ¸ÞÀÎÁÖ¼Ò";
        String to = "¹Þ´ÂÀÌ ¾ÆÀ̵ð@µµ¸ÞÀÎÁÖ¼Ò";
        
        try {
            MimeMessage mail = mailSender.createMimeMessage();
            MimeMessageHelper mailHelper = new MimeMessageHelper(mail,true,"UTF-8");
            
            mailHelper.setFrom(from);
            mailHelper.setTo(to);
            mailHelper.setSubject(subject);
            mailHelper.setText(content, true);
            
            FileSystemResource file = new FileSystemResource(new File("D:\\test.txt")); 
            mailHelper.addAttachment("¾÷·ÎµåÆÄÀÏ.Çü½Ä", file);
            
            mailSender.send(mail);
            
        } catch(Exception e) {
            e.printStackTrace();
        }
        
    }

 

6. ¸ÞÀÏ Àü¼Û Å×½ºÆ®

 Å×½ºÆ® Ŭ·¡½º¸¦ ÅëÇØ Controller ¸Þ¼­µå¿¡ Ãß°¡Çß´ø ÄÚµåµéÀ» Å×½ºÆ® Çغ¸°Ú½À´Ï´Ù. Å×½ºÆ® Ŭ·¡½º¸¦ »ý¼º ÈÄ ¾Æ·¡ÀÇ Äڵ带 ÀÛ¼ºÇÏ¿´½À´Ï´Ù. mailSendTest(), mailSendTest2()°¡ Àִµ¥ µÑ Áß Çϳª¸¦ »ç¿ëÇÏ½Ã¸é µË´Ï´Ù. 

 

import java.io.File;
 
import javax.mail.internet.MimeMessage;
 
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.MimeMessagePreparator;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("file:src/main/webapp/WEB-INF/spring/root-context.xml")
public class MailTestController {
 
    @Autowired
    JavaMailSenderImpl mailSender;
    
    // MimeMessage °´Ã¼¸¦ Á÷Á¢ »ý¼ºÇÏ¿© ¸ÞÀÏÀ» ¹ß¼ÛÇϴ ¹æ¹ý
    @Test
    public void mailSendTest() throws Exception{
        
        
        String subject = "test ¸ÞÀÏ";
        String content = "¸ÞÀÏ Å×½ºÆ® ³»¿ë" + "<img src=\"https://t1.daumcdn.net/cfile/tistory/214DCD42594CC40625\">";
        String from = "º¸³»´ÂÀÌ ¾ÆÀ̵ð@µµ¸ÞÀÎÁÖ¼Ò";
        String to = "¹Þ´ÂÀÌ ¾ÆÀ̵ð@µµ¸ÞÀÎÁÖ¼Ò";
        
        try {
            MimeMessage mail = mailSender.createMimeMessage();
            MimeMessageHelper mailHelper = new MimeMessageHelper(mail, "UTF-8");
            
            mailHelper.setFrom(from);
            mailHelper.setTo(to);
            mailHelper.setSubject(subject);
            mailHelper.setText(content, true);
            
            FileSystemResource file = new FileSystemResource(new File("D:\\test.txt")); 
            mailHelper.addAttachment("test.txt", file);            
            
            mailSender.send(mail);
            
        } catch(Exception e) {
            e.printStackTrace();
        }
        
    }
    
    // MimeMessagePreparator¸¦ »ç¿ëÇؼ­ ¸ÞÀÏÀ» Àü¼ÛÇϴ ¹æ¹ý
    @Test
    public void mailSendTest2() throws Exception{
        
        String subject = "test ¸ÞÀÏ";
        String content = "¸ÞÀÏ Å×½ºÆ® ³»¿ë" + "<img src=\"https://t1.daumcdn.net/cfile/tistory/214DCD42594CC40625\">";
        String from = "º¸³»´ÂÀÌ ¾ÆÀ̵ð@µµ¸ÞÀÎÁÖ¼Ò";
        String to = "¹Þ´ÂÀÌ ¾ÆÀ̵ð@µµ¸ÞÀÎÁÖ¼Ò";
        
        try {
            final MimeMessagePreparator preparator = new MimeMessagePreparator() {
                
                public void prepare(MimeMessage mimeMessage) throws Exception{
                    final MimeMessageHelper mailHelper = new MimeMessageHelper(mimeMessage, true"UTF-8");
                    
                    mailHelper.setFrom(from);
                    mailHelper.setTo(to);
                    mailHelper.setSubject(subject);
                    mailHelper.setText(content, true);
                    
                    FileSystemResource file = new FileSystemResource(new File("D:\\test.txt")); 
                    mailHelper.addAttachment("test.txt", file);
                    
                }
                
            };
            
            mailSender.send(preparator);
            
        } catch(Exception e) {
            e.printStackTrace();
        }
        
        
        
    }
    
    
}
 

 

Å×½ºÆ® °á°úÀÔ´Ï´Ù. 

 

±×¸² 6-1

Reference

Date

  • 2020.08.27 ÀÛ¼º