pooney
article thumbnail
Published 2020. 1. 3. 00:04
Spring mail 보내기 Spring

 

 

web.xml(mail-context.xml를 읽어 빈등록)

<html />
<context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/spring/*.xml </param-value> </context-param>

 

 

 

pom.xml 

<html />
<!-- 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> <!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api --> <dependency> <groupId>javax.mail</groupId> <artifactId>javax.mail-api</artifactId> <version>1.5.3</version> </dependency> <!-- https://mvnrepository.com/artifact/com.sun.mail/javax.mail --> <dependency> <groupId>com.sun.mail</groupId> <artifactId>javax.mail</artifactId> <version>1.5.3</version> </dependency>

 

mail-context.xml (port를 465와 587이 존재하는데 587를 사용해야한다.)

<html />
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl"> <property name="host"><value>smtp.gmail.com</value></property> <property name="port"><value>587</value></property> <property name="username"><value>아이디@gmail.com</value></property> <property name="password"><value>패스워드</value></property> <property name="javaMailProperties"> <props> <prop key="mail.smtp.transport.protocol">smtp</prop> <prop key="mail.smtp.auth">true</prop> <prop key="mail.smtp.starttls.enable">true</prop> <prop key="mail.smtp.socketFactory.class">javax.net.ssl.SSLSocketFactory</prop> <prop key="mail.debug">true</prop> </props> </property> </bean> </beans>

 

MailSendException: Mail server connection failed ~~~ 라는 아래와 같은 에러가 나오면 보안설정이나 , 방화벽, avast와 같은 백신으로 인하여 충돌이 나서 날 확율이 크니 백신을 끄거나 방화벽을 확인 해야한다. 이것도 안되면 (https://myaccount.google.com/lesssecureapps ) 링크로가서 허용을 한다 

<html />
org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465, response: -1. Failed messages: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465, response: -1; message exception details (1) are: Failed message 1:

<java />
Request processing failed; nested exception is org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Could not convert socket to TLS;

 

is SSL false은 포트가 잘못 됬을 확률 이높다 구글은 ssl을 지원함으로  587로 바꾼다 

<html />
DEBUG SMTP: trying to connect to host "smtp.gmail.com", port 465, isSSL false DEBUG SMTP: could not connect to host "smtp.gmail.com", port: 465, response: -1

 

 

controller(메시지를 보낸다)

<html />
String to="blue672@naver.com"; String subject = "안녕"; String body = "이야 최고"; /* html형식으로 메일을 보내고 싶은경우 setText(body,true)를 해야한다 String body = "<html>\n" + "\n" + "<head>\n" + "\n" + "</head>\n" + "\n" + "<body>\n" + "\n" + "<img src=\"http://comshop.kro.kr/computer/images/hard.jpg\"/>\n" + "\n" + "</body>\n" + "\n" + "</html>"; */ try { System.out.println("메시지 전송시작2"); MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper messageHelper = new MimeMessageHelper(message, true, "UTF-8"); messageHelper.setFrom("aoaoaoal329@gmail.com"); messageHelper.setSubject(subject); //제목 messageHelper.setTo(to); //받는이 messageHelper.setText(body); //내용 // messageHelper.setText(body,true); //html 형식으로 보내는 경우 반드시 true해야한다 mailSender.send(message); System.out.println("메시지 전송완료"); } catch (Exception e) { System.out.println("에러남"); e.printStackTrace(); }

 

 

1. avast와 같은 백신을 반드시 꺼야한다 아니면 블루스크린이 뜬다. 

 

'Spring' 카테고리의 다른 글

Spring 외부 설정 프로퍼티  (0) 2020.04.06
Spring 트랜잭션  (0) 2020.02.22
Spring 파일업로드  (0) 2020.02.20
HttpMediaTypeNotSupportedException  (0) 2020.01.15
Spring 버전 업 시 에러  (0) 2020.01.13
profile

pooney

@pooney

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!