1.메일 서버를 통해 메일을 발송 처리하는 기능을 말한다.
메일 발송
웹 client ===> 웹 서버(웹서버프로그램) ==>
메일 서버 ==> 메일 클라이언트(해당계정)
2.기본 환경 설정
1) 메일 서버 계정 생성 및 확인
-실습예제 -gmail.com (사용하지 않으시는 분들은 등록해주세요)
-보안 설정 부분 처리 (구글 smtp 인증 설정) 꼭 하셔야 합니다.
2) 컨테이너에서 gmail 서버 활용할 수 있게 등록 처리
main/webapp/WEB-INF/lib/activation.jar
가 필요하니 해당 위치 확인
-메일 발송 서버 컨테이너에 설정(smtp)
<bean id = "mailSender"
class="org.springframework.mail.javamail.JavaMailSenderImpl"/>
3.개발순서
1)초기 화면 로딩(form)
제목
발신자
수신자
내용
[메일발송]
2) 초기화면에서 메일발송 클릭시, 처리할 controller 호출
3) service(메일발송 처리)
web.xml
<!--
# 메일 발송 모듈 선언
-->
<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="메일주소 입력"/>
<property name="password" value="구글2차인증 비밀번호 입력"/>
<property name="javaMailProperties">
<props>
<prop key="mail.smtp.starttls.enable">true</prop>
<prop key="mail.smtp.auth">true</prop>
<prop key="mail.transport.protocol">smtp</prop>
<prop key="mail.debug">true</prop>
<prop key="mail.smtp.ssl.trust">smtp.gmail.com</prop>
<prop key="mail.smtp.ssl.protocols">TLSv1.2</prop>
</props>
</property>
</bean>
VO
// 메일 발송 처리 정보 vo
public class Mail {
private String receiver; //수신자
private String sender; // 발신자
private String title; //제목
private String content; //내용
public String getReceiver() {
return receiver;
}
public void setReceiver(String receiver) {
this.receiver = receiver;
}
public String getSender() {
return sender;
}
public void setSender(String sender) {
this.sender = sender;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}}
Service
@Service
public class MailSenderService {
// 컨테이너에 있는 객체 호출.
@Autowired(required = false)
private JavaMailSender sender;
public String sendMail(Mail email) {
String msg = "메일 발송 성공";
// 1. 멀티미디어형 메일 데이터 전송.
MimeMessage mmsg = sender.createMimeMessage();
// 2. 제목 설정.
try {
// mmsg.setXXXX(전달할 정보) : 기타 정보에 대한 할당 처리..
mmsg.setSubject(email.getTitle());
// 3. 수신자 설정.
mmsg.setRecipient(RecipientType.TO, new InternetAddress(email.getReceiver()));
// 4. 내용 설정.
// ex) 계정 비밀번호 입력 처리..
mmsg.setText(email.getContent());
// 5. 발송 처리.
sender.send(mmsg);
} catch (MessagingException e) {
// TODO Auto-generated catch block
msg="메일 발송 에러:"+e.getMessage();
System.out.println(msg);
} catch (Exception e) {
msg = "일반 에러 발생:"+e.getMessage();
}
return msg;
}
}
Controller
@Controller
public class MailController {
@Autowired(required=false)
private MailSenderService service;
// http://localhost:7080/springweb/mailForm.do
@GetMapping("mailForm.do")
public String mailForm() {
return "WEB-INF\\views\\a02_mvc\\a22_mailForm.jsp";
}
@PostMapping("mailSender.do")
public String mailSender(Mail mail, Model d) {
d.addAttribute("msg",service.sendMail(mail));
return "WEB-INF\\views\\a02_mvc\\a22_mailForm.jsp";
}
}
jsp
<body>
<div class="jumbotron text-center">
<h2 >메일발송</h2>
</div>
<div class="container">
<form id="frm01" class="form"
action="${path}/mailSender.do" method="post">
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="text-center input-group-text">수신자</span>
</div>
<input name="receiver" class="form-control"
value="" placeholder="수신자 메일 주소를 입력하세요" />
</div>
<div class="input-group mb-3">
<div name="sender" class="input-group-prepend">
<span class="text-center input-group-text">발신자</span>
</div>
<input class="form-control"
value="자신계정입력" readonly/>
<!-- gmail 계정(자신 계정) -->
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="text-center input-group-text">제 목</span>
</div>
<input name="title" class="form-control"
value="" placeholder="제목을 입력하세요" />
</div>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="text-center input-group-text">내 용</span>
</div>
<textarea name="content" rows="10" class="form-control"
placeholder="내용 입력하세요"></textarea>
</div>
<div class="text-right">
<button type="submit" class="btn btn-success">메일발송</button>
</div>
</form>
</div>
</body>
'JAVA' 카테고리의 다른 글
JAVA fullcalendar 달력 캘린더 처리 (1) | 2022.10.04 |
---|---|
JAVA 다국어처리 (0) | 2022.10.04 |
JAVA 웹소켓 통신 (0) | 2022.10.04 |
JAVA 파일 업로드 다운로드 (0) | 2022.10.04 |
JAVA 개발환경 설정 (1) | 2022.08.25 |