Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 시큐리티
- 코틀린
- 쿼리
- JPA
- IntelliJ
- aws
- 에러
- 생성
- Security
- GitHub
- Java
- Vue
- 프로그래머스
- 오라클
- 자바
- 함수
- Spring
- 스프링
- kotlin
- Git
- JavaScript
- Eclipse
- mybatis
- 넥사크로
- error
- 알고리즘
- 방법
- oracle
- db
- jquery
Archives
- Today
- Total
송민준의 개발노트
email 서비스(네이버) 본문
1. 네이버로 가서 내 메일함 옆에 환경설정 버튼 누른 후 다음과 같이 세팅
2. 코드 추가
- root.context.xml
<!-- 프로퍼티 파일을 이용해서 값을 주입하는 방법
<util:properties>를 이용해서 properties 타입의 빈으로 만든다. -->
<util:properties id="mailinfo" location ="classpath:pro/mail.roperties"/>
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.naver.com"/>
<property name="port" value="587"/>
<property name="username" value="#{mailinfo['id']}"/>
<property name="password" value="#{mailinfo['password']}"/>
<property name="javaMailProperties">
<props> <prop key="mail.smtp.auth">true</prop></props>
<prop key="mail.smtp.ssl.trust">smtp.naver.com</prop>
</property>
</bean>
- MailVO.java
import lombok.Data;
@Data
public class MailVO {
private String from="dkaskgkdua@naver.com";
private String to;
private String subject = "회원 가입을 축하드립니다. - 제목";
private String content = "회원 가입을 축하드립니다. - 내용";
}
- SendMail.java
import javax.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.mail.javamail.MimeMessagePreparator;
import com.naver.myhome5.domain.MailVO;
public class SendMail {
@Autowired
private JavaMailSenderImpl mailSender;
public void sendMail(MailVO vo) {
MimeMessagePreparator mp = new MimeMessagePreparator() {
@Override
public void prepare(MimeMessage mimeMessage) throws Exception {
// 두 번째 인자 true는 멀티 파트 메시지를 사용하겠다는 의미입니다.
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
helper.setFrom(vo.getFrom());
helper.setTo(vo.getTo());
helper.setSubject(vo.getSubject());
// 1. 문자로만 전송하는 경우
helper.setText(vo.getContent(), true);//두번째 인자는 html을 사용하겠다는 뜻
}
};
mailSender.send(mp); // 메일 전송한다.
System.out.println("메일 보냄");
}
}
- pom.xml
<!-- 메일 전송 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.6</version>
</dependency>
- mail.properties
id= 아이디
password= 비밀번호
- Controller.java
@RequestMapping(value = "/joinProcess.net", method = RequestMethod.GET)
public void joinProcess(Member member, HttpServletResponse response) throws Exception {
/*
* Member m = new Member(); m.setId(id); m.setPassword(password);
* m.setName(name); m.setAge(age); m.setGender(gender); m.setEmail(email);
*/
int result = memberservice.insert(member);
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<script>");
if (result == 1) {
MailVO vo = new MailVO();
vo.setTo(member.getEmail());
vo.setContent(member.getId() + "님 회원가입을 축하드립니다.");
sendMail.sendMail(vo);
out.println("alert('가입성공');");
out.println("location.href='login.net';");
} else if (result == -1) {
out.println("alert('아이디 중복');");
out.println("history.go(-1);");
}
out.println("</script>");
out.close();
}
● 파일 및 html 식으로 보내고 싶다면?
SendMail.java
import java.io.File;
import javax.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
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.stereotype.Component;
import com.naver.myhome5.domain.MailVO;
@Component
public class SendMail {
@Autowired
private JavaMailSenderImpl mailSender;
@Value("${sendfile}")
private String sendfile;
public void sendMail(MailVO vo) {
MimeMessagePreparator mp = new MimeMessagePreparator() {
@Override
public void prepare(MimeMessage mimeMessage) throws Exception {
// 두 번째 인자 true는 멀티 파트 메시지를 사용하겠다는 의미입니다.
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
helper.setFrom(vo.getFrom());
helper.setTo(vo.getTo());
helper.setSubject(vo.getSubject());
// 1. 문자로만 전송하는 경우
//helper.setText(vo.getContent(), true);//두번째 인자는 html을 사용하겠다는 뜻
// 2. 이미지를 내장해서 보내는 경우
String content = "<img src='cid:Home'>" + vo.getContent();
helper.setText(content, true);
FileSystemResource file = new FileSystemResource(new File(sendfile));
helper.addInline("Home", file);
/* 첫번째 인자 - "Home"
* contentId 사용할 콘텐츠 id
* src="cid:myId" : myId"표현식을 통해 HTML 소스에서 참조할 수 있다.
* <img src="/read/image/original/?mimSN=1577767951.538782.9219
* */
//3 파일을 첨부해서 보내는 경우
FileSystemResource file1 = new FileSystemResource(new File(sendfile));
//첫번째 인자 : 첨부될 파일의 이름
//두번째 : 첨부파일
helper.addAttachment("remove.jpg", file1);
}
};
mailSender.send(mp); // 메일 전송한다.
System.out.println("메일 보냄");
}
}
savefolder.properties
sendfile=C:\\Users\\user1\\Downloads\\remove.png
'웹 > Spring Framework' 카테고리의 다른 글
transaction (0) | 2020.01.03 |
---|---|
AOP(Aspect Oriented Programming) (0) | 2020.01.02 |
404 에러, Exception 처리 (0) | 2019.12.30 |
Spring lombok 설치(이클립스, STS) (0) | 2019.12.25 |
Spring 간단 정리 (0) | 2019.12.22 |