Spring MVC 5.xx 프레임워크를 사용하여 이메일을 보내는 간단한 방법 – org.springframework.mail. javamail.JavaMailSenderImpl
게시 됨: 2018-10-23Spring MVC 프레임워크 소개, Hello World Spring MVC, Spring MVC를 사용하여 여러 파일 업로드 등과 같은 Spring MVC의 Crunchify에 대해 읽었을 수 있는 기사가 꽤 있습니다.
이 튜토리얼에서는 Spring MVC 5.1.3.RELEASE를 사용하여 이메일을 보내기 위해 org.springframework.mail.javamail.JavaMailSenderImpl
라이브러리를 활용하는 방법을 다룰 것입니다.
시작하자:
다음은 최종 프로젝트 구조입니다. 그에 따라 파일을 생성해야 합니다.
1 단계
간단한 Maven 프로젝트 CrunchifySpringMVC4SendEmailTutorial
을 만듭니다.
- "
Create a simple project (skip archetype selection)
" 옵션에 대한 확인란을 선택합니다. - 다음 단계에서 사용할 그룹 ID, 아티팩트 ID, 이름 및 설명과 같이 아래 다이어그램과 유사한 모든 정보를 제공하십시오.
2 단계
pom.xml
파일을 열고 3개의 종속성을 추가합니다.
- 스프링 컨텍스트
- 스프링 컨텍스트 지원
- javax.mail
여기 내 전체 pom.xml
파일이 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
< project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi : schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion > 4.0.0 < / modelVersion > < groupId > CrunchifySpringMVC4SendEmailTutorial < / groupId > < artifactId > CrunchifySpringMVC4SendEmailTutorial < / artifactId > < version > 0.0.1 - SNAPSHOT < / version > < name > CrunchifySpringMVC4SendEmailTutorial < / name > < description > Best way to send an email using Spring MVC 4.1.6 - Crunchify Tips < / description > < dependencies > < dependency > < groupId > org . springframework < / groupId > < artifactId > spring - context < / artifactId > < version > 5.1.3.RELEASE < / version > < / dependency > < dependency > < groupId > org . springframework < / groupId > < artifactId > spring - context - support < / artifactId > < version > 5.1.3.RELEASE < / version > < / dependency > < dependency > < groupId > javax . mail < / groupId > < artifactId > mail < / artifactId > < version > 1.4.7 < / version > < / dependency > < / dependencies > < / project > |
3단계
src/main/resources
폴더에 Spring Bean 파일 crunchify-bean.xml
을 생성합니다.
Spring Bean은 전통적인 XML 접근 방식을 사용하여 구성됩니다. Spring MVC 프레임워크에서 bean
은 instantiated
, assembled
및 Spring IoC(Inversion of Control) 컨테이너에 의해 managed
되는 객체입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<? xml version = "1.0" encoding = "UTF-8" ?> < beans xmlns = "http://www.springframework.org/schema/beans" xmlns : util = "http://www.springframework.org/schema/util" xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns : context = "http://www.springframework.org/schema/context" xsi : schemaLocation = " http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd" > < ! -- this is your package structure where you create file CrunchifyEmailAPI . java and CrunchifyEmailTest . java -- > < context : component - scan base - package = "crunchify.com.tutorials" / > < ! -- Production implementation of the JavaMailSender interface , supporting both JavaMail MimeMessages and Spring SimpleMailMessages -- > < bean id = "mailSender" class = "org.springframework.mail.javamail.JavaMailSenderImpl" > < property name = "host" value = "smtp.gmail.com" / > < property name = "port" value = "587" / > < property name = "username" value = "<!-- Provide your Gmail ID -->" / > < property name = "password" value = "<!-- Provide your Gmail Password -->" / > < ! -- The name of the property , following JavaBean naming conventions -- > < property name = "javaMailProperties" > < props > < prop key = "mail.transport.protocol" > smtp < / prop > < prop key = "mail.smtp.auth" > true < / prop > < prop key = "mail.smtp.starttls.enable" > true < / prop > < prop key = "mail.debug" > true < / prop > < / props > < / property > < / bean > < / beans > |
username
및 password
필드 값을 실제/실제 값으로 업데이트했는지 확인하십시오.
4단계
src/main/java
폴더 아래 @Service
(org.springframework.stereotype.Service)로 API 클래스 CrunchifyEmailAPI.java
주석을 생성합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
package crunchify . com . tutorials ; import org . springframework . beans . factory . annotation . Autowired ; import org . springframework . mail . MailSender ; import org . springframework . mail . SimpleMailMessage ; import org . springframework . stereotype . Service ; /** * @author Crunchify.com * */ @Service ( "crunchifyEmail" ) public class CrunchifyEmailAPI { @Autowired private MailSender crunchifymail ; // MailSender interface defines a strategy // for sending simple mails public void crunchifyReadyToSendEmail ( String toAddress , String fromAddress , String subject , String msgBody ) { SimpleMailMessage crunchifyMsg = new SimpleMailMessage ( ) ; crunchifyMsg . setFrom ( fromAddress ) ; crunchifyMsg . setTo ( toAddress ) ; crunchifyMsg . setSubject ( subject ) ; crunchifyMsg . setText ( msgBody ) ; crunchifymail . send ( crunchifyMsg ) ; } } |
5단계
src/main/java
폴더 아래에 테스트 클래스 CrunchifyEmailTest.java
를 생성합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package crunchify . com . tutorials ; import org . springframework . context . ConfigurableApplicationContext ; import org . springframework . context . support . ClassPathXmlApplicationContext ; /** * @author Crunchify.com * */ public class CrunchifyEmailTest { @SuppressWarnings ( "resource" ) public static void main ( String args [ ] ) { // Spring Bean file you specified in /src/main/resources folder String crunchifyConfFile = "crunchify-bean.xml" ; ConfigurableApplicationContext context = new ClassPathXmlApplicationContext ( crunchifyConfFile ) ; // @Service("crunchifyEmail") <-- same annotation you specified in CrunchifyEmailAPI.java CrunchifyEmailAPI crunchifyEmailAPI = ( CrunchifyEmailAPI ) context . getBean ( "crunchifyEmail" ) ; // email subject String subject = "Hey.. This email sent by Crunchify's Spring MVC Tutorial" ; // email body String body = "There you go.. You got an email.. Let's understand details on how Spring MVC works -- By Crunchify Admin" ; crunchifyEmailAPI . crunchifyReadyToSendEmail ( toAddr , fromAddr , subject , body ) ; } } |
위의 toAddr
및 fromAddr
을 업데이트했는지 확인하십시오.

6단계
이제 CrunchifyEmailTest.java를 let's run
하고 console
결과를 확인합니다. 또한 checkout your Gmail
하는 것을 잊지 마십시오.
내 Gmail 계정에서:
콘솔 출력:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
Jun 22, 2015 8:38:05 PM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@5010be6: startup date [Mon Jun 22 20:38:05 CDT 2015]; root of context hierarchy Jun 22, 2015 8:38:06 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions INFO: Loading XML bean definitions from class path resource [crunchify-bean.xml] DEBUG: JavaMail version 1.4.7 DEBUG: successfully loaded resource: /META-INF/javamail.default.providers DEBUG: Tables of loaded providers DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle] DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 587, isSSL false 220 mx.google.com ESMTP gc7sm11710775obb.26 - gsmtp DEBUG SMTP: connected to host "smtp.gmail.com", port: 587 EHLO 192.168.0.3 250-mx.google.com at your service, [25.15.21.112] 250-SIZE 35882577 250-8BITMIME 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250 SMTPUTF8 DEBUG SMTP: Found extension "SIZE", arg "35882577" DEBUG SMTP: Found extension "8BITMIME", arg "" DEBUG SMTP: Found extension "STARTTLS", arg "" DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg "" DEBUG SMTP: Found extension "PIPELINING", arg "" DEBUG SMTP: Found extension "CHUNKING", arg "" DEBUG SMTP: Found extension "SMTPUTF8", arg "" STARTTLS 220 2.0.0 Ready to start TLS EHLO 192.161.0.22 250-mx.google.com at your service, [25.15.21.112] 250-SIZE 35882577 250-8BITMIME 250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN XOAUTH 250-ENHANCEDSTATUSCODES 250-PIPELINING 250-CHUNKING 250 SMTPUTF8 DEBUG SMTP: Found extension "SIZE", arg "35882577" DEBUG SMTP: Found extension "8BITMIME", arg "" DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN XOAUTH" DEBUG SMTP: Found extension "ENHANCEDSTATUSCODES", arg "" DEBUG SMTP: Found extension "PIPELINING", arg "" DEBUG SMTP: Found extension "CHUNKING", arg "" DEBUG SMTP: Found extension "SMTPUTF8", arg "" DEBUG SMTP: Attempt to authenticate using mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM DEBUG SMTP: AUTH LOGIN command trace suppressed DEBUG SMTP: AUTH LOGIN succeeded DEBUG SMTP: use8bit false MAIL FROM:<test@crunchify.com> 250 2.1.0 OK gc7sm11710775obb.26 - gsmtp RCPT TO:<test@crunchify.com> 250 2.1.5 OK gc7sm11710775obb.26 - gsmtp DEBUG SMTP: Verified Addresses DEBUG SMTP: test@crunchify.com DATA 354 Go ahead gc7sm11710775obb.26 - gsmtp Date: Mon, 22 Jun 2015 20:38:08 -0500 (CDT) From: test@crunchify.com To: test@crunchify.com Message-ID: <428566321.0.1435023488148.JavaMail.app@LM-AUN-11000370> Subject: Hey.. This email sent by Crunchify's Spring MVC Tutorial MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit There you go.. You got an email.. Let's understand details on how Spring MVC works -- By Crunchify Admin . 250 2.0.0 OK 1435023491 gc7sm11710775obb.26 - gsmtp QUIT 221 2.0.0 closing connection gc7sm11710775obb.26 - gsmtp |