본문 바로가기

JAVA

JAVA 메일전송

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